Merge pull request #593 from zongzi531/hotfix/unsafe

Fix typo in unsafe
pull/599/head
Sunface 3 years ago committed by GitHub
commit 5b14e72ce3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -42,7 +42,7 @@ fn main() {
} }
``` ```
上面代码中, `r1` 是一个裸指针(又称裸指针,raw pointer),由于它具有破坏 Rust 内存安全的潜力,因此只能在 `unsafe` 代码块中使用,如果你去掉 `unsafe {}`,编译器会立刻报错。 上面代码中, `r1` 是一个裸指针(raw pointer),由于它具有破坏 Rust 内存安全的潜力,因此只能在 `unsafe` 代码块中使用,如果你去掉 `unsafe {}`,编译器会立刻报错。
言归正传, `unsafe` 能赋予我们 5 种超能力,这些能力在安全的 Rust 代码中是无法获取的: 言归正传, `unsafe` 能赋予我们 5 种超能力,这些能力在安全的 Rust 代码中是无法获取的:

@ -4,7 +4,7 @@
## 解引用裸指针 ## 解引用裸指针
裸指针(raw pointer) 又称裸指针,在功能上跟引用类似,同时它也需要显式地注明可变性。但是又和引用有所不同,裸指针长这样: `*const T``*mut T`,它们分别代表了不可变和可变。 裸指针(raw pointer,又称原生指针) 在功能上跟引用类似,同时它也需要显式地注明可变性。但是又和引用有所不同,裸指针长这样: `*const T``*mut T`,它们分别代表了不可变和可变。
大家在之前学过 `*` 操作符,知道它可以用于解引用,但是在裸指针 `*const T` 中,这里的 `*` 只是类型名称的一部分,并没有解引用的含义。 大家在之前学过 `*` 操作符,知道它可以用于解引用,但是在裸指针 `*const T` 中,这里的 `*` 只是类型名称的一部分,并没有解引用的含义。
@ -407,7 +407,7 @@ extern "C" {
- 数据竞争 - 数据竞争
- 内存对齐问题 - 内存对齐问题
但是需要注意的是,它只能帮助识别被执行代码路径的风险,些未被执行到的代码是没办法被识别的。 但是需要注意的是,它只能帮助识别被执行代码路径的风险,些未被执行到的代码是没办法被识别的。
#### Clippy #### Clippy
@ -427,7 +427,7 @@ extern "C" {
## 总结 ## 总结
至此,`unsafe` 的五种兵器已介绍完毕,大家是否意犹未尽?我想说的是,就算意犹未尽,也没有其它器了。 至此,`unsafe` 的五种兵器已介绍完毕,大家是否意犹未尽?我想说的是,就算意犹未尽,也没有其它器了。
就像上一章中所提到的,`unsafe` 只应该用于这五种场景,其它场景,你应该坚决的使用安全的代码,否则就会像 `actix-web` 的前作者一样,被很多人议论,甚至被喷。。。 就像上一章中所提到的,`unsafe` 只应该用于这五种场景,其它场景,你应该坚决的使用安全的代码,否则就会像 `actix-web` 的前作者一样,被很多人议论,甚至被喷。。。

Loading…
Cancel
Save