move_semantics2.rs (510B)
1 fn fill_vec(vec: Vec<i32>) -> Vec<i32> { 2 let mut vec = vec; 3 4 vec.push(88); 5 6 vec 7 } 8 9 fn main() { 10 // You can optionally experiment here. 11 } 12 13 #[cfg(test)] 14 mod tests { 15 use super::*; 16 17 #[test] 18 fn move_semantics2() { 19 let vec0 = vec![22, 44, 66]; 20 21 // Cloning `vec0` so that the clone is moved into `fill_vec`, not `vec0` 22 // itself. 23 let vec1 = fill_vec(vec0.clone()); 24 25 assert_eq!(vec0, [22, 44, 66]); 26 assert_eq!(vec1, [22, 44, 66, 88]); 27 } 28 }