1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-01-09 09:11:50 +02:00

vi: Translate From, Into and Comparison chapter from std-trait session (#2078)

This commit is contained in:
Võ Hoàng Long 2024-07-05 00:49:37 +09:00 committed by GitHub
parent a20b8754a5
commit a23398d31c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6524,41 +6524,50 @@ msgstr "Phần này sẽ kéo dài khoảng 1 giờ và 40 phút, bao gồm:"
#: src/std-traits.md #: src/std-traits.md
msgid "From and Into" msgid "From and Into"
msgstr "" msgstr "From và Into"
#: src/std-traits.md #: src/std-traits.md
msgid "Read and Write" msgid "Read and Write"
msgstr "" msgstr "Read và Write"
#: src/std-traits.md #: src/std-traits.md
msgid "Default, struct update syntax" msgid "Default, struct update syntax"
msgstr "" msgstr "Default, cú pháp cập nhật struct"
#: src/std-traits.md #: src/std-traits.md
msgid "" msgid ""
"As with the standard-library types, spend time reviewing the documentation " "As with the standard-library types, spend time reviewing the documentation "
"for each trait." "for each trait."
msgstr "" msgstr ""
"Tương tự như trong chương về các kiểu dữ liệu chuẩn, hãy dành thời gian để "
"ôn lại tài liệu cho mỗi trait."
#: src/std-traits.md #: src/std-traits.md
msgid "This section is long. Take a break midway through." msgid "This section is long. Take a break midway through."
msgstr "" msgstr ""
"Nội dung của chương này khá dài, hãy cho học sinh nghỉ giải lao giữa chương."
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "" msgid ""
"These traits support comparisons between values. All traits can be derived " "These traits support comparisons between values. All traits can be derived "
"for types containing fields that implement these traits." "for types containing fields that implement these traits."
msgstr "" msgstr ""
"Kiểu dữ liệu implement các trait này có thể được so sánh với nhau. Tất cả "
"các trait này có thể được derive nếu các trường của kiểu dữ liệu sử dụng "
"derive cũng implement các trait này."
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "`PartialEq` and `Eq`" msgid "`PartialEq` and `Eq`"
msgstr "" msgstr "`PartialEq` và `Eq`"
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "" msgid ""
"`PartialEq` is a partial equivalence relation, with required method `eq` and " "`PartialEq` is a partial equivalence relation, with required method `eq` and "
"provided method `ne`. The `==` and `!=` operators will call these methods." "provided method `ne`. The `==` and `!=` operators will call these methods."
msgstr "" msgstr ""
"`PartialEq` là một quan hệ tương đương một phần. Kiểu dữ liệu implement "
"trait này phải định nghĩa hàm `eq`, hàm `ne` tự được định nghĩa dựa trên "
"`eq`. Các toán tử `==` và `!=` sẽ gọi đến các hàm này."
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "" msgid ""
@ -6566,51 +6575,67 @@ msgid ""
"and implies `PartialEq`. Functions that require full equivalence will use " "and implies `PartialEq`. Functions that require full equivalence will use "
"`Eq` as a trait bound." "`Eq` as a trait bound."
msgstr "" msgstr ""
"`Eq` là một quan hệ tương đương toàn phần (tính phản xạ, đối xứng và bắc "
"cầu). Kiểu dữ liệu implement trait này mặc định implement `PartialEq`. Các "
"hàm yêu cầu quan hệ tương đương toàn phần sẽ sử dụng `Eq` dưới dạng một "
"trait bound."
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "`PartialOrd` and `Ord`" msgid "`PartialOrd` and `Ord`"
msgstr "" msgstr "`PartialOrd` và `Ord`"
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "" msgid ""
"`PartialOrd` defines a partial ordering, with a `partial_cmp` method. It is " "`PartialOrd` defines a partial ordering, with a `partial_cmp` method. It is "
"used to implement the `<`, `<=`, `>=`, and `>` operators." "used to implement the `<`, `<=`, `>=`, and `>` operators."
msgstr "" msgstr ""
"`PartialOrd` định nghĩa một quan hệ thứ tự một phần, với hàm `partial_cmp`. "
"Trait này được sử dụng để implement các toán tử `<`, `<=`, `>=`, và `>`."
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "`Ord` is a total ordering, with `cmp` returning `Ordering`." msgid "`Ord` is a total ordering, with `cmp` returning `Ordering`."
msgstr "" msgstr ""
"`Ord` là một quan hệ thứ tự toàn phần, với hàm `cmp` trả về kiểu dữ liệu "
"`Ordering`."
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "" msgid ""
"`PartialEq` can be implemented between different types, but `Eq` cannot, " "`PartialEq` can be implemented between different types, but `Eq` cannot, "
"because it is reflexive:" "because it is reflexive:"
msgstr "" msgstr ""
"`PartialEq` có thể được implement để so sánh giữa các kiểu dữ liệu khác "
"nhau, nhưng `Eq` thì không, vì `Eq` có tính phản xạ:"
#: src/std-traits/comparisons.md #: src/std-traits/comparisons.md
msgid "" msgid ""
"In practice, it's common to derive these traits, but uncommon to implement " "In practice, it's common to derive these traits, but uncommon to implement "
"them." "them."
msgstr "" msgstr ""
"Trong thực tế, các trait này thường thường được derive, ít khi được "
"implement."
#: src/std-traits/operators.md #: src/std-traits/operators.md
msgid "" msgid ""
"Operator overloading is implemented via traits in [`std::ops`](https://doc." "Operator overloading is implemented via traits in [`std::ops`](https://doc."
"rust-lang.org/std/ops/index.html):" "rust-lang.org/std/ops/index.html):"
msgstr "" msgstr ""
"Ta có thể thực hiện overloading toán tử thông qua các trait trong [`std::"
"ops`](https://doc.rust-lang.org/std/ops/index.html):"
#: src/std-traits/operators.md #: src/std-traits/operators.md
msgid "\"{:?} + {:?} = {:?}\"" msgid "\"{:?} + {:?} = {:?}\""
msgstr "" msgstr "\"{:?} + {:?} = {:?}\""
#: src/std-traits/operators.md src/memory-management/drop.md #: src/std-traits/operators.md src/memory-management/drop.md
msgid "Discussion points:" msgid "Discussion points:"
msgstr "" msgstr "Một số điểm cần thảo luận:"
#: src/std-traits/operators.md #: src/std-traits/operators.md
msgid "" msgid ""
"You could implement `Add` for `&Point`. In which situations is that useful?" "You could implement `Add` for `&Point`. In which situations is that useful?"
msgstr "" msgstr ""
"Ta có thể implement `Add` cho `&Point`. Việc này có ích trong những tình "
"huống nào?"
#: src/std-traits/operators.md #: src/std-traits/operators.md
msgid "" msgid ""
@ -6618,12 +6643,17 @@ msgid ""
"the operator is not `Copy`, you should consider overloading the operator for " "the operator is not `Copy`, you should consider overloading the operator for "
"`&T` as well. This avoids unnecessary cloning on the call site." "`&T` as well. This avoids unnecessary cloning on the call site."
msgstr "" msgstr ""
"Trả lời: `Add:add` tiêu thụ `self`. Nếu kiểu `T` mà ta muốn overloading toán "
"tử không implement `Copy`, ta cũng nên cân nhắc overload toán tử cho `&T`. "
"Như vậy ta có thể tránh việc clone không cần thiết tại thời điểm gọi hàm."
#: src/std-traits/operators.md #: src/std-traits/operators.md
msgid "" msgid ""
"Why is `Output` an associated type? Could it be made a type parameter of the " "Why is `Output` an associated type? Could it be made a type parameter of the "
"method?" "method?"
msgstr "" msgstr ""
"Tại sao `Output` là một associated type? Có thể thay thế `Output` bằng một "
"tham số generic cho hàm không?"
#: src/std-traits/operators.md #: src/std-traits/operators.md
msgid "" msgid ""
@ -6631,12 +6661,16 @@ msgid ""
"associated types (like `Output`) are controlled by the implementer of a " "associated types (like `Output`) are controlled by the implementer of a "
"trait." "trait."
msgstr "" msgstr ""
"Trả lời: Tham số generic của hàm được quyết định bởi người gọi hàm, nhưng "
"associated types (như `Output`) được quyết định bởi người implement trait."
#: src/std-traits/operators.md #: src/std-traits/operators.md
msgid "" msgid ""
"You could implement `Add` for two different types, e.g. `impl Add<(i32, " "You could implement `Add` for two different types, e.g. `impl Add<(i32, "
"i32)> for Point` would add a tuple to a `Point`." "i32)> for Point` would add a tuple to a `Point`."
msgstr "" msgstr ""
"Ta có thể implement `Add` cho hai kiểu dữ liệu khác nhau, ví dụ `impl "
"Add<(i32, i32)> for Point` sẽ cộng một tuple vào một `Point`."
#: src/std-traits/from-and-into.md #: src/std-traits/from-and-into.md
msgid "" msgid ""
@ -6644,10 +6678,13 @@ msgid ""
"html) and [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) to " "html) and [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) to "
"facilitate type conversions:" "facilitate type conversions:"
msgstr "" msgstr ""
"Ta có thể implement trait [`From`](https://doc.rust-lang.org/std/convert/"
"trait.From.html) và [`Into`](https://doc.rust-lang.org/std/convert/trait."
"Into.html) để đơn giản hoá việc chuyển đổi kiểu dữ liệu:"
#: src/std-traits/from-and-into.md #: src/std-traits/from-and-into.md
msgid "\"{s}, {addr}, {one}, {bigger}\"" msgid "\"{s}, {addr}, {one}, {bigger}\""
msgstr "" msgstr "\"{s}, {addr}, {one}, {bigger}\""
#: src/std-traits/from-and-into.md #: src/std-traits/from-and-into.md
msgid "" msgid ""
@ -6655,12 +6692,17 @@ msgid ""
"automatically implemented when [`From`](https://doc.rust-lang.org/std/" "automatically implemented when [`From`](https://doc.rust-lang.org/std/"
"convert/trait.From.html) is implemented:" "convert/trait.From.html) is implemented:"
msgstr "" msgstr ""
"[`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) sẽ tự động "
"được implement khi [`From`](https://doc.rust-lang.org/std/convert/trait.From."
"html) được implement:"
#: src/std-traits/from-and-into.md #: src/std-traits/from-and-into.md
msgid "" msgid ""
"That's why it is common to only implement `From`, as your type will get " "That's why it is common to only implement `From`, as your type will get "
"`Into` implementation too." "`Into` implementation too."
msgstr "" msgstr ""
"Vì vậy, thông thường ta chỉ cần implement `From`, vì kiểu dữ liệu của bạn sẽ "
"tự động có `Into`."
#: src/std-traits/from-and-into.md #: src/std-traits/from-and-into.md
msgid "" msgid ""
@ -6669,6 +6711,10 @@ msgid ""
"Your function will accept types that implement `From` and those that _only_ " "Your function will accept types that implement `From` and those that _only_ "
"implement `Into`." "implement `Into`."
msgstr "" msgstr ""
"Ngược lại, khi ta muốn khai báo 1 hàm nhận \"bất kỳ kiểu dữ liệu nào có thể "
"chuyển đổi thành `String`\", ta nên sử dụng `Into`. Như vậy, hàm được khai "
"báo sẽ chấp nhận các kiểu dữ liệu implement `From` và những kiểu dữ liệu chỉ "
"implement `Into`."
#: src/std-traits/casting.md #: src/std-traits/casting.md
msgid "" msgid ""