// vecs2.rs // // A Vec of even numbers is given. Your task is to complete the loop so that // each number in the Vec is multiplied by 2. // // Make me pass the test! // // Execute `rustlings hint vecs2` or use the `hint` watch subcommand for a hint. fn vec_loop(mut v: Vec) -> Vec { for element in v.iter_mut() { // TODO: Fill this up so that each element in the Vec `v` is // multiplied by 2. *element *= 2; // the star in front of the element is a dereference operator // it is used to access the value of the element to change it. } // At this point, `v` should be equal to [4, 8, 12, 16, 20]. v } fn vec_map(v: &Vec) -> Vec { v.iter().map(|element| { // TODO: Do the same thing as above - but instead of mutating the // Vec, you can just return the new number! element * 2 }).collect() } #[cfg(test)] mod tests { use super::*; #[test] fn test_vec_loop() { let v: Vec = (1..).filter(|x| x % 2 == 0).take(5).collect(); let ans = vec_loop(v.clone()); assert_eq!(ans, v.iter().map(|x| x * 2).collect::>()); } #[test] fn test_vec_map() { let v: Vec = (1..).filter(|x| x % 2 == 0).take(5).collect(); let ans = vec_map(&v); assert_eq!(ans, v.iter().map(|x| x * 2).collect::>()); } }