Rustling exercise problem

Can someone help me with the following problem please?
// move_semantics2.rs
// Make me compile without changing line 13!
// Execute rustlings hint move_semantics2 for hints :slight_smile:

// I AM NOT DONE

fn main() {
    let vec0 = Vec::new();

    let mut vec1 = fill_vec(vec0);

    // Do not change the following line!
    println!("{} has length {} content `{:?}`", "vec0", vec0.len(), vec0);

    vec1.push(88);

    println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1);
}

fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
    let mut vec = vec;

    vec.push(22);
    vec.push(44);
    vec.push(66);

    vec
}

Not sure what your end goal is but below is one approach that gets it to compile.

Caveats:

  1. The code will change significantly depending upon your expectations regarding end state of vec1 and vec0.
  2. This is not the most efficient approach but beginner friendly nonetheless.

Here is a Playground - Rust Playground

fn main() {
    let mut vec0 = Vec::new();

    let mut vec1 = fill_vec(&mut vec0);

    // Do not change the following line!
    println!("{} has length {} content `{:?}`", "vec0", vec0.len(), vec0);

    vec1.push(88);

    println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1);
}

fn fill_vec(vec: &mut Vec<i32>) -> Vec<i32> {

    vec.push(22);
    vec.push(44);
    vec.push(66);

    vec.to_vec()
}

Changes I made:

  1. Accept and pass a mutable reference to the vector
let mut vec1 = fill_vec(&mut vec0);
...
...
fn fill_vec(vec: &mut Vec<i32>) -> Vec<i32>
  1. Return a clone of the mutated vector in fill_vec
    vec.to_vec()
  1. Make vec0 mutable
let mut vec0 = Vec::new();

Doesn't work.

I mean...

fn main() {
    let vec0 = Vec::<usize>::new();

    // Do not change the following line!
    println!("{} has length {} content `{:?}`", "vec0", vec0.len(), vec0);
}

The point of the exercise isn't clear. Is there something you don't understand which you would like to?