Yes, use the method clone_from_slice()
, it is generic over any element type that implements Clone
.
fn main() {
let mut x = vec![0; 8];
let y = [1, 2, 3];
x[..3].clone_from_slice(&y);
println!("{:?}", x);
// Output:
// [1, 2, 3, 0, 0, 0, 0, 0]
}
The destination x
is either a &mut [T]
slice, or anything that derefs to that, like a mutable Vec<T>
vector. You need to slice the destination and source so that their lengths match.
As of Rust 1.9, you can also use copy_from_slice()
. This works the same way but uses the Copy
trait instead of Clone
, and is a direct wrapper of memcpy
. The compiler can optimize clone_from_slice
to be equivalent to copy_from_slice
when applicable, but it can still be useful.