Bla*_*tko 2 mutable immutability rust
我在使用函数时出错,因为借用一个可变的,如果还有一个不可变的借用,就像多次借用一个可变的一样是不允许的。
pub fn _function(list: &mut Vec<char>) {
for (n, c) in list.iter().enumerate() {
if *c == ' ' {
list.remove(n);
}
}
}
Run Code Online (Sandbox Code Playgroud)
pub fn _function(list: &mut Vec<char>) {
for (n, c) in list.iter().enumerate() {
if *c == ' ' {
list.remove(n);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的唯一解决方案是克隆列表。
pub fn _function(list: &mut Vec<char>) {
for (n, c) in list.clone().iter().enumerate() {
if *c == ' ' {
list.remove(n);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有其他解决方案可以在不克隆列表和使用更多内存的情况下使用这两个函数。
没有真正的通用方法可以同时读取和修改 vec。但是有针对特定情况的临时解决方案。
在这里,您可以使用retainwhich 修改 vec 以仅保留验证谓词的元素:
pub fn _function(list: &mut Vec<char>) {
list.retain(|&c| c != ' ');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |