1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-01-08 17:01:32 +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
msgid "From and Into"
msgstr ""
msgstr "From và Into"
#: src/std-traits.md
msgid "Read and Write"
msgstr ""
msgstr "Read và Write"
#: src/std-traits.md
msgid "Default, struct update syntax"
msgstr ""
msgstr "Default, cú pháp cập nhật struct"
#: src/std-traits.md
msgid ""
"As with the standard-library types, spend time reviewing the documentation "
"for each trait."
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
msgid "This section is long. Take a break midway through."
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
msgid ""
"These traits support comparisons between values. All traits can be derived "
"for types containing fields that implement these traits."
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
msgid "`PartialEq` and `Eq`"
msgstr ""
msgstr "`PartialEq` và `Eq`"
#: src/std-traits/comparisons.md
msgid ""
"`PartialEq` is a partial equivalence relation, with required method `eq` and "
"provided method `ne`. The `==` and `!=` operators will call these methods."
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
msgid ""
@ -6566,51 +6575,67 @@ msgid ""
"and implies `PartialEq`. Functions that require full equivalence will use "
"`Eq` as a trait bound."
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
msgid "`PartialOrd` and `Ord`"
msgstr ""
msgstr "`PartialOrd` và `Ord`"
#: src/std-traits/comparisons.md
msgid ""
"`PartialOrd` defines a partial ordering, with a `partial_cmp` method. It is "
"used to implement the `<`, `<=`, `>=`, and `>` operators."
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
msgid "`Ord` is a total ordering, with `cmp` returning `Ordering`."
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
msgid ""
"`PartialEq` can be implemented between different types, but `Eq` cannot, "
"because it is reflexive:"
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
msgid ""
"In practice, it's common to derive these traits, but uncommon to implement "
"them."
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
msgid ""
"Operator overloading is implemented via traits in [`std::ops`](https://doc."
"rust-lang.org/std/ops/index.html):"
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
msgid "\"{:?} + {:?} = {:?}\""
msgstr ""
msgstr "\"{:?} + {:?} = {:?}\""
#: src/std-traits/operators.md src/memory-management/drop.md
msgid "Discussion points:"
msgstr ""
msgstr "Một số điểm cần thảo luận:"
#: src/std-traits/operators.md
msgid ""
"You could implement `Add` for `&Point`. In which situations is that useful?"
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
msgid ""
@ -6618,12 +6643,17 @@ msgid ""
"the operator is not `Copy`, you should consider overloading the operator for "
"`&T` as well. This avoids unnecessary cloning on the call site."
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
msgid ""
"Why is `Output` an associated type? Could it be made a type parameter of the "
"method?"
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
msgid ""
@ -6631,12 +6661,16 @@ msgid ""
"associated types (like `Output`) are controlled by the implementer of a "
"trait."
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
msgid ""
"You could implement `Add` for two different types, e.g. `impl Add<(i32, "
"i32)> for Point` would add a tuple to a `Point`."
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
msgid ""
@ -6644,10 +6678,13 @@ msgid ""
"html) and [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) to "
"facilitate type conversions:"
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
msgid "\"{s}, {addr}, {one}, {bigger}\""
msgstr ""
msgstr "\"{s}, {addr}, {one}, {bigger}\""
#: src/std-traits/from-and-into.md
msgid ""
@ -6655,12 +6692,17 @@ msgid ""
"automatically implemented when [`From`](https://doc.rust-lang.org/std/"
"convert/trait.From.html) is implemented:"
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
msgid ""
"That's why it is common to only implement `From`, as your type will get "
"`Into` implementation too."
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
msgid ""
@ -6669,6 +6711,10 @@ msgid ""
"Your function will accept types that implement `From` and those that _only_ "
"implement `Into`."
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
msgid ""