我正在阅读官方的Rust Book,并在4.3节中查看清单4-8。
代码如下:
fn first_word(s: &String) -> usize {
let bytes = s.as_bytes();
for (i, &item) in bytes.iter().enumerate() {
if item == b' ' {
return i;
}
}
s.len()
}
fn main() {
let mut s = String::from("hello world");
let word = first_word(&s);
s.clear();
}
Run Code Online (Sandbox Code Playgroud)
这行:
let word = first_word(&s);
Run Code Online (Sandbox Code Playgroud)
似乎借用了一成不变的提法s。(这是我想我错了的地方;我只是不知道为什么。)
在下一行,我们s通过调用clear()方法来进行变异。
我期望编译器抛出:
cannot borrow `s` as mutable because it is also borrowed as immutable
Run Code Online (Sandbox Code Playgroud)
为什么会编译?
rust ×1