5

我有一个Vec<&str>并且我想从它的所有元素中删除一个前缀。这就是我模糊的意图:

fn remove_prefix(v: &mut [&str], prefix: &str) {
    for t in v.iter_mut() {
        t = t.trim_left_matches(prefix);
    }
}

但是,我似乎无法将所有mut' 放在正确的位置。或者也许这是与一生有关的事情?谁能给我一个提示?这是我当前的错误:

makefile_to_qbs.rs:22:7: 22:34 error: mismatched types:
 expected `&mut &str`,
    found `&str`
(values differ in mutability) [E0308]
makefile_to_qbs.rs:22           t = t.trim_left_matches(prefix);
4

1 回答 1

6

t类型为&mut &str,指向字符串切片的可变指针。您希望更改可变引用指向的内容,因此您需要将 a 存储&str*t.

fn remove_prefix(v: &mut [&str], prefix: &str) {
    for t in v.iter_mut() {
        *t = t.trim_left_matches(prefix);
    }
}
于 2015-06-29T13:48:32.687 回答