如何更改Rust中矢量的长度?

问题描述 投票:3回答:2

编者注:这个问题早于Rust 1.0,语法和方法从那时起就发生了变化。一些答案解释了Rust 1.0。

我有一个函数,我想修改一个向量。

fn f(v: &mut Vec<int>) {
    v = Vec::from_elem(10 as uint, 0i);
}

fn main() {
    let mut v: Vec<int> = Vec::new();
    f(&mut v);
}

但这无法编译。具体来说,我想调整v的大小,以包含10个零值元素。我究竟做错了什么?

vector rust
2个回答
3
投票

编者注:这个答案早于Rust 1.0,不再一定准确。其他答案仍包含有价值的信息。

你正在寻找grow方法。

let mut vec = vec![1i,2,3];
vec.grow(4, &10);
println!("{}", vec);

或者growclear的组合。

您可以在这里浏览文档:http://static.rust-lang.org/doc/master/std/vec/struct.Vec.html


3
投票

使用clearresize方法。 (这似乎是Rust 1.0和1.5的正确答案。)

fn f(v: &mut Vec<u32>) {
    // Remove all values in the vector
    v.clear();

    // Fill the vector with 10 zeros
    v.resize(10, 0);
}

fn main() {
    let mut v: Vec<u32> = Vec::new();
    f(&mut v);
    assert!(v == [0,0,0,0,0,0,0,0,0,0]);
}
© www.soinside.com 2019 - 2024. All rights reserved.