修改字符串切片

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);
1个回答

6

t 的类型是 &mut &str,一个可变的指向字符串切片的指针。你希望改变可变引用指向的内容,因此需要将一个 &str 存储在 *t 中。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接