I'm trying to understand how to translate Java arrays into Rust. Why is mutability different for owned and managed vectors? The following program compiles and prints 42 when run: fn main() { let mut v: ~[i32] = ~[0, 0]; v[0] = 42; let s = i32::to_str(v[0], 10); io::println(s); return; }
However, the following program won't compile: fn main() { let mut v: @[i32] = @[0, 0]; v[0] = 42; let s = i32::to_str(v[0], 10); io::println(s); return; } This compiles, however: fn main() { let mut v: @[mut i32] = @[mut 0, 0]; v[0] = 42; let s = i32::to_str(v[0], 10); io::println(s); return; } - - How is one supposed to implement growable buffers? Can Rust vectors grow in-place? http://dl.rust-lang.org/doc/0.4/core/at_vec.html#function-capacity suggests they can. How does one append to a vector in-place? What's the buffer growth strategy? On the other hand, if vectors can't grow in-place and one needs to explicitly allocate a new vector and copy the contents of the old vector over, what's the right way to allocate a long (garbage-filled or zero-filled) vector without putting a long series of zeros and, as in the source code? That is, how do I say "give me a zero-filled vector of length 1024"? - - What's the Rust equivalent of System.arrayCopy() for efficiently copying a range of elements from a vector to another? - - Can a vector of object references have any empty slots? Or do empty slots need to have some kind of dummy objects in them to avoid null pointers? -- Henri Sivonen hsivo...@iki.fi http://hsivonen.iki.fi/ _______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev