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?

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.