From 3fe5899a3aad0804c1755660d41c9704b415c95e Mon Sep 17 00:00:00 2001 From: Alexander Qi Date: Sun, 23 Oct 2022 23:49:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Wrap=20should=20be=20translated=20as=20"?= =?UTF-8?q?=E5=9B=9E=E7=BB=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch03-02-data-types.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ch03-02-data-types.md b/src/ch03-02-data-types.md index 6797b95..1c20f0e 100644 --- a/src/ch03-02-data-types.md +++ b/src/ch03-02-data-types.md @@ -63,9 +63,9 @@ let guess: u32 = "42".parse().expect("Not a number!"); > > 比方说有一个 `u8` ,它可以存放从零到 `255` 的值。那么当你将其修改为 `256` 时会发生什么呢?这被称为 “整型溢出”(“integer overflow” ),这会导致以下两种行为之一的发生。当在 debug 模式编译时,Rust 检查这类问题并使程序 *panic*,这个术语被 Rust 用来表明程序因错误而退出。第九章 [“`panic!` 与不可恢复的错误”][unrecoverable-errors-with-panic] 部分会详细介绍 panic。 > -> 在 release 构建中,Rust 不检测溢出,相反会进行一种被称为二进制补码包装(*two’s complement wrapping*)的操作。简而言之,值 `256` 变成 `0`,值 `257` 变成 `1`,依此类推。依赖整型溢出被认为是一种错误,即便可能出现这种行为。如果你确实需要这种行为,标准库中有一个类型显式提供此功能,[`Wrapping`][wrapping]。 +> 在 release 构建中,Rust 不检测溢出,相反会进行一种被称为二进制补码回绕(*two’s complement wrapping*)的操作。简而言之,比此类型能容纳最大值还大的值会回绕到最小值,值 `256` 变成 `0`,值 `257` 变成 `1`,依此类推。依赖整型回绕被认为是一种错误,即便可能出现这种行为。如果你确实需要这种行为,标准库中有一个类型显式提供此功能,[`Wrapping`][wrapping]。 > 为了显式地处理溢出的可能性,你可以使用标准库在原生数值类型上提供的以下方法: -> - 所有模式下都可以使用 `wrapping_*` 方法进行包装,如 `wrapping_add` +> - 所有模式下都可以使用 `wrapping_*` 方法进行回绕,如 `wrapping_add` > - 如果 `checked_*` 方法出现溢出,则返回 `None`值 > - 用 `overflowing_*` 方法返回值和一个布尔值,表示是否出现溢出 > - 用 `saturating_*` 方法在值的最小值或最大值处进行饱和处理 From b8d66c8b6b1ef21ea91b3533500c9674e44a2c7a Mon Sep 17 00:00:00 2001 From: Alexander Qi Date: Sun, 23 Oct 2022 23:55:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?accent=20=E6=8C=87=E8=A5=BF=E6=AC=A7?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E7=9A=84=E5=8F=98=E9=9F=B3=E7=AC=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://zh.wikipedia.org/wiki/%E9%99%84%E5%8A%A0%E7%AC%A6%E5%8F%B7 --- src/ch03-02-data-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch03-02-data-types.md b/src/ch03-02-data-types.md index 1c20f0e..7f808d5 100644 --- a/src/ch03-02-data-types.md +++ b/src/ch03-02-data-types.md @@ -118,7 +118,7 @@ Rust的 `char` 类型是语言中最原生的字母类型。下面是一些声 {{#rustdoc_include ../listings/ch03-common-programming-concepts/no-listing-09-char/src/main.rs}} ``` -注意,我们用单引号声明 `char` 字面量,而与之相反的是,使用双引号声明字符串字面量。Rust 的 `char` 类型的大小为四个字节(four bytes),并代表了一个 Unicode 标量值(Unicode Scalar Value),这意味着它可以比 ASCII 表示更多内容。在 Rust 中,拼音字母(Accented letters),中文、日文、韩文等字符,emoji(绘文字)以及零长度的空白字符都是有效的 `char` 值。Unicode 标量值包含从 `U+0000` 到 `U+D7FF` 和 `U+E000` 到 `U+10FFFF` 在内的值。不过,“字符” 并不是一个 Unicode 中的概念,所以人直觉上的 “字符” 可能与 Rust 中的 `char` 并不符合。第八章的 [“使用字符串存储 UTF-8 编码的文本”][strings] 中将详细讨论这个主题。 +注意,我们用单引号声明 `char` 字面量,而与之相反的是,使用双引号声明字符串字面量。Rust 的 `char` 类型的大小为四个字节(four bytes),并代表了一个 Unicode 标量值(Unicode Scalar Value),这意味着它可以比 ASCII 表示更多内容。在 Rust 中,带变音符号的字母(Accented letters),中文、日文、韩文等字符,emoji(绘文字)以及零长度的空白字符都是有效的 `char` 值。Unicode 标量值包含从 `U+0000` 到 `U+D7FF` 和 `U+E000` 到 `U+10FFFF` 在内的值。不过,“字符” 并不是一个 Unicode 中的概念,所以人直觉上的 “字符” 可能与 Rust 中的 `char` 并不符合。第八章的 [“使用字符串存储 UTF-8 编码的文本”][strings] 中将详细讨论这个主题。 ### 复合类型