小编Dar*_*ikh的帖子

为什么这不算作一成不变的借贷?

我正在阅读官方的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

3
推荐指数
1
解决办法
53
查看次数

标签 统计

rust ×1