docs: add missing notes

This commit is contained in:
YangFong 2022-03-07 19:18:42 +08:00
parent 0253dc7a4c
commit 2b88471138
2 changed files with 4 additions and 4 deletions

View File

@ -3,11 +3,11 @@ fn main() {
}
// ANCHOR: here
fn dangle() -> &String { // / dangle 返回一个字符串的引用
fn dangle() -> &String { // dangle 返回一个字符串的引用
let s = String::from("hello"); // s 是一个新字符串
&s // // 返回字符串 s 的引用
&s // 返回字符串 s 的引用
} // 这里 s 离开作用域并被丢弃。其内存被释放。
// 危险!
// ANCHOR_END: here

View File

@ -68,7 +68,7 @@
首先,我们必须将 `s` 改为 `mut`。然后必须在调用 `change` 函数的地方创建一个可变引用 `&mut s`,并更新函数签名以接受一个可变引用 `some_string: &mut String`。这就非常清楚地表明,`change` 函数将改变它所借用的值。
不过可变引用有一个很大的限制:在同一时间只能有一个对某一特定数据的可变引用。这些代码会失败:
不过可变引用有一个很大的限制:在同一时间只能有一个对某一特定数据的可变引用。尝试创建两个可变引用的代码将会失败:
<span class="filename">文件名: src/main.rs</span>
@ -82,7 +82,7 @@
{{#include ../listings/ch04-understanding-ownership/no-listing-10-multiple-mut-not-allowed/output.txt}}
```
这个报错说这段代码是无效的,因为我们不能在同一时间多次将 `s` 作为可变变量借用。第一个可变的借入在 `r1` 中,并且必须持续到在 `println` 中使用它,但是在那个可变引用的创建和它的使用之间,我们又尝试在 `r2` 中创建另一个可变引用,该引用借用`r1` 相同的数据。
这个报错说这段代码是无效的,因为我们不能在同一时间多次将 `s` 作为可变变量借用。第一个可变的借入在 `r1` 中,并且必须持续到在 `println!` 中使用它,但是在那个可变引用的创建和它的使用之间,我们又尝试在 `r2` 中创建另一个可变引用,它借用了`r1` 相同的数据。
防止同一时间对同一数据进行多个可变引用的限制允许可变性,不过是以一种受限制的方式允许。新 Rustacean 们经常难以适应这一点,因为大部分语言中变量任何时候都是可变的。