如何使用Rust替换矢量的一部分?

aor9mmx1  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(116)

用新向量替换向量的特定部分的最佳方法是什么?

到目前为止,我正在使用硬编码代码来替换矢量。实现这一点最有效的方法是什么?

fn main() {
    let mut v = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
    
    let u = vec![0,0,0,0];

    v[2] = u[0];
    v[3] = u[1];
    v[4] = u[2];
    v[5] = u[3];
    

    println!("v = {:?}", v);
}

Permalink to the playground
是否有函数可以用给定的索引替换向量?

s5a0g9ez

s5a0g9ez1#

对于Copy类型:

v[2..][..u.len()].copy_from_slice(&u);

Playground
对于非Copy类型:

v.splice(2..2 + u.len(), u);

是的。

ee7vknir

ee7vknir2#

另一个道:

let offset : usize = 2;
u.iter().enumerate().for_each(|(index, &val)| {
   v[index + offset] = val;
});

Playground

相关问题