如何在 Rust 中更改向量的长度?

Jim*_*son 6 vector rust

编者注:这个问题早于 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);
}
Run Code Online (Sandbox Code Playgroud)

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

mfl*_*ehr 6

使用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]);
}
Run Code Online (Sandbox Code Playgroud)