Merge pull request #899 from scitarust/patch-2

Update ch20-01-unsafe-rust.md
pull/901/head
KaiserY 1 week ago committed by GitHub
commit f8ac51bdab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -205,7 +205,7 @@ Rust 的借用检查器无法理解我们要借用这个 slice 的两个不同
在本书中,我们尚未讨论过 **全局变量***global variables*Rust 确实支持它们,不过这对于 Rust 的所有权规则来说是有问题的。如果有两个线程访问相同的可变全局变量,则可能会造成数据竞争。
全局变量在 Rust 中被称为 **静态***static*)变量。示例 20-9 展示了一个拥有字符串 slice 值的静态变量的声明和使用:
全局变量在 Rust 中被称为 **静态***static*)变量。示例 20-10 展示了一个拥有字符串 slice 值的静态变量的声明和使用:
<span class="filename">文件名src/main.rs</span>
@ -217,7 +217,7 @@ Rust 的借用检查器无法理解我们要借用这个 slice 的两个不同
静态(`static`)变量类似于第三章 [“变量和常量的区别”][differences-between-variables-and-constants] 部分讨论的常量。通常静态变量的名称采用 `SCREAMING_SNAKE_CASE` 写法。静态变量只能储存拥有 `'static` 生命周期的引用,这意味着 Rust 编译器可以自己计算出其生命周期而无需显式标注。访问不可变静态变量是安全的。
常量与不可变静态变量的一个微妙的区别是静态变量中的值有一个固定的内存地址。使用这个值总是会访问相同的地址。另一方面,常量则允许在任何被用到的时候复制其数据。另一个区别在于静态变量可以是可变的。访问和修改可变静态变量都是 **不安全** 的。示例 20-10 展示了如何声明、访问和修改名为 `COUNTER` 的可变静态变量:
常量与不可变静态变量的一个微妙的区别是静态变量中的值有一个固定的内存地址。使用这个值总是会访问相同的地址。另一方面,常量则允许在任何被用到的时候复制其数据。另一个区别在于静态变量可以是可变的。访问和修改可变静态变量都是 **不安全** 的。示例 20-11 展示了如何声明、访问和修改名为 `COUNTER` 的可变静态变量:
<span class="filename">文件名src/main.rs</span>

Loading…
Cancel
Save