rust 如何克隆一个固定容量的载体?

wmvff8tz  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(111)

默认情况下,克隆Vec时,仅为新Vec分配所需的最小容量:

fn main() {
    let mut x = Vec::with_capacity(10);
    x.push(1);
    x.push(2);
    x.push(3);
    println!("x capacity: {}", x.capacity()); // 10
    let y = x.clone();
    println!("y capacity: {}", y.capacity()); // 3
}

如果我想保留原来的容量,克隆Vec的最有效方法是什么?有没有办法分配一个容量为x.capacity()的新向量,然后只从我的第一个向量中复制值?

7gcisfzg

7gcisfzg1#

let mut original_vec: Vec<usize> = Vec::with_capacity(10);
original_vec.push(1);
original_vec.push(2);
original_vec.push(3);

let mut target_vec = Vec::with_capacity(original_vec.capacity());
target_vec.extend(&original_vec);

相关问题