笔者注:此问题早于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个零值元素。我做错了什么?
v
,因为它是一个指针。*v = Vec::from_elem(10 as uint, 0i);
。 - huon10u
是10 as uint
的简写,但实际上,由于10
是无类型的,编译器会推断它应该是一个uint
并且“做正确的事情”。同样,由于Vec
被推断为Vec<int>
,因此只需要0
而不是0i
就足够了。 - Matthieu M.