首页 > 解决方案 > 如何获取和替换 Rust Vec 中的值?

问题描述

我正在寻找的是一种替换方法:

pub fn replace(&mut self, index: usize, element: T) -> T

替换向量内索引位置处的元素并返回现有值。

调用 remove+insert 对我来说似乎很浪费。

标签: vectorcollectionsrust

解决方案


您可以在任何为您提供对其元素的可变引用的容器上轻松地模拟这一点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);
}

永久链接到操场

结果:

v = [1, 2, 3, 42, 5, 6]
got = 4

在 的情况下Vec,如果您想替换一系列元素,您会对该方法感兴趣,该方法splice替换值并返回旧值。但是,对于单个值,它可能效率较低。


推荐阅读