// 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. // [[NOTE]] 解引用, map fn vec_loop(mut v: Vec) -> Vec { for element in v.iter_mut() { // multiplied by 2. *element *= 2; // Fill this up so that each element in the Vec `v` is } // At this point, `v` should be equal to [4, 8, 12, 16, 20]. v } fn vec_map(v: &Vec) -> Vec { v.iter().map(|element| { // Vec, you can just return the new number! element * 2 // Do the same thing as above - but instead of mutating the }).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::>()); } }