feat(vec): update vec exercises

This commit is contained in:
mokou 2022-07-12 15:05:47 +02:00
parent 7af12ba9aa
commit 8e1f617d34
3 changed files with 28 additions and 6 deletions

View File

@ -2,7 +2,7 @@
// Your task is to create a `Vec` which holds the exact same elements
// as in the array `a`.
// Make me compile and pass the test!
// Execute the command `rustlings hint vec1` if you need hints.
// Execute `rustlings hint vec1` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE

View File

@ -4,8 +4,7 @@
//
// Make me pass the test!
//
// Execute the command `rustlings hint vec2` if you need
// hints.
// Execute `rustlings hint vec2` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
@ -13,12 +12,21 @@ fn vec_loop(mut v: Vec<i32>) -> Vec<i32> {
for i in v.iter_mut() {
// TODO: Fill this up so that each element in the Vec `v` is
// multiplied by 2.
???
}
// At this point, `v` should be equal to [4, 8, 12, 16, 20].
v
}
fn vec_map(v: &Vec<i32>) -> Vec<i32> {
v.iter().map(|num| {
// TODO: Do the same thing as above - but instead of mutating the
// Vec, you can just return the new number!
???
}).collect()
}
#[cfg(test)]
mod tests {
use super::*;
@ -30,4 +38,12 @@ mod tests {
assert_eq!(ans, v.iter().map(|x| x * 2).collect::<Vec<i32>>());
}
#[test]
fn test_vec_map() {
let v: Vec<i32> = (1..).filter(|x| x % 2 == 0).take(5).collect();
let ans = vec_map(&v);
assert_eq!(ans, v.iter().map(|x| x * 2).collect::<Vec<i32>>());
}
}

View File

@ -260,9 +260,15 @@ name = "vec2"
path = "exercises/collections/vec2.rs"
mode = "test"
hint = """
Hint 1: `i` is each element from the Vec as they are being iterated.
Can you try multiplying this?
Hint 2: Check the suggestion from the compiler error ;)
Hint 1: `i` is each element from the Vec as they are being iterated. Can you try
multiplying this?
Hint 2: For the first function, there's a way to directly access the numbers stored
in the Vec, using the * dereference operator. You can both access and write to the
number that way.
After you've completed both functions, decide for yourself which approach you like
better. What do you think is the more commonly used pattern under Rust developers?
"""
# MOVE SEMANTICS