修改一段str

时间:2015-06-29 13:41:22

标签: rust mutability

我有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);

1 个答案:

答案 0 :(得分:6)

&str的类型为*t,是指向字符串切片的可变指针。您希望更改可变参考指向的内容,因此您需要在fn remove_prefix(v: &mut [&str], prefix: &str) { for t in v.iter_mut() { *t = t.trim_left_matches(prefix); } } 中存储{{1}}。

{{1}}