// move_semantics4.rs // Refactor this code so that instead of having `vec0` and creating the vector // in `fn main`, we create it within `fn fill_vec` and transfer the // freshly created vector from fill_vec to its caller. // Execute `rustlings hint move_semantics4` for hints! // // original code // fn main() { // let vec0 = Vec::new(); // let mut vec1 = fill_vec(vec0); // println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1); // vec1.push(88); // println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1); // } // // original code (cont'd) // // `fill_vec()` no longer takes `vec: Vec` as argument // fn fill_vec() -> Vec { // let mut vec = vec; // vec.push(22); // vec.push(44); // vec.push(66); // vec // } // // end of original code // solution fn main() { let mut vec1 = fill_vec(); println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1); vec1.push(88); println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1); } // solution (cont'd) // `fill_vec()` no longer takes `vec: Vec` as argument fn fill_vec() -> Vec { // create mutable vec let mut vec = Vec::new(); vec.push(22); vec.push(44); vec.push(66); vec } // end of solution