Guy*_*and 2 collections vector rust
我正在寻找的是一种替换方法:
Run Code Online (Sandbox Code Playgroud)pub fn replace(&mut self, index: usize, element: T) -> T替换向量中位置索引处的元素,并返回现有值。
调用remove + insert对我来说似乎很浪费。
您可以在任何使用std::mem::replace以下变量对其容器进行可变引用的容器上轻松模拟:
fn main() {
let mut v = vec![1, 2, 3, 4, 5, 6];
let got = std::mem::replace(&mut v[3], 42);
println!("v = {:?}", v);
println!("got = {:?}", got);
}
Run Code Online (Sandbox Code Playgroud)
(永久链接到操场)
结果:
v = [1, 2, 3, 42, 5, 6]
got = 4
Run Code Online (Sandbox Code Playgroud)
对于Vec,如果要替换一系列元素,则对方法感兴趣,该方法splice替换值并返回旧的。但是,对于单个值,它可能效率较低。