From 0f6e444fd08a7ee8d6f9614082743ab9807dde23 Mon Sep 17 00:00:00 2001 From: AlreadyM <617054896@qq.com> Date: Tue, 18 Apr 2023 21:59:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=A5=BF=E9=87=8C=E5=B0=94?= =?UTF-8?q?=E5=AD=97=E6=AF=8D=E9=83=A8=E5=88=86=E7=9A=84=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E8=AF=AD=E4=B9=89=E9=80=9A=E7=95=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch08-02-strings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch08-02-strings.md b/src/ch08-02-strings.md index 5adba23..6c5bf06 100644 --- a/src/ch08-02-strings.md +++ b/src/ch08-02-strings.md @@ -163,7 +163,7 @@ let hello = "Здравствуйте"; let answer = &hello[0]; ``` -我们已经知道 `answer` 不是第一个字符 `З`。当使用 UTF-8 编码时,`З` 的第一个字节 `208`,第二个是 `151`,所以 `answer` 实际上应该是 `208`,不过 `208` 自身并不是一个有效的字母。返回 `208` 可不是一个请求字符串第一个字母的人所希望看到的,不过它是 Rust 在字节索引 0 位置所能提供的唯一数据。用户通常不会想要一个字节值被返回。即使这个字符串只有拉丁字母,如果 `&"hello"[0]` 是返回字节值的有效代码,它也会返回 `104` 而不是 `h`。 +我们已经知道 `answer`的第一个字符不是数字`3`。当使用 UTF-8 编码时,第一个字节(西里尔字母的 Ze)`З` 的编码是 `208`,第二个是 `151`,所以 `answer` 实际上应该是 `208`,不过 `208` 自身并不是一个有效的字母。返回 `208` 可不是一个请求字符串第一个字母的人所希望看到的,不过它是 Rust 在字节索引 0 位置所能提供的唯一数据。用户通常不会想要一个字节值被返回。即使这个字符串只有拉丁字母,如果 `&"hello"[0]` 是返回字节值的有效代码,它也会返回 `104` 而不是 `h`。 为了避免返回意外的值并造成不能立刻发现的 bug,Rust 根本不会编译这些代码,并在开发过程中及早杜绝了误会的发生。