mirror of
https://github.com/rust-lang-cn/book-cn.git
synced 2025-01-22 23:10:20 +08:00
docs: add missing notes
This commit is contained in:
parent
0253dc7a4c
commit
2b88471138
@ -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
|
||||
|
@ -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 们经常难以适应这一点,因为大部分语言中变量任何时候都是可变的。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user