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