1
0
mirror of https://github.com/rust-lang/rustlings.git synced 2025-10-08 23:02:03 +02:00

Merge pull request #2294 from senekor/senekor/qxykzqyxnnwy

Remove use of `map` in early vecs2 exercise
This commit is contained in:
Mo Bitar
2025-09-25 16:55:36 +02:00
committed by GitHub
4 changed files with 5 additions and 74 deletions

View File

@@ -1,5 +1,9 @@
## Unreleased ## Unreleased
### Changed
- `vecs2`: Removed the use of `map` and `collect`, which are only taught later.
## 6.5.0 (2025-08-21) ## 6.5.0 (2025-08-21)
### Added ### Added

View File

@@ -9,26 +9,6 @@ fn vec_loop(input: &[i32]) -> Vec<i32> {
output output
} }
fn vec_map_example(input: &[i32]) -> Vec<i32> {
// An example of collecting a vector after mapping.
// We map each element of the `input` slice to its value plus 1.
// If the input is `[1, 2, 3]`, the output is `[2, 3, 4]`.
input.iter().map(|element| element + 1).collect()
}
fn vec_map(input: &[i32]) -> Vec<i32> {
// TODO: Here, we also want to multiply each element in the `input` slice
// by 2, but with iterator mapping instead of manually pushing into an empty
// vector.
// See the example in the function `vec_map_example` above.
input
.iter()
.map(|element| {
// ???
})
.collect()
}
fn main() { fn main() {
// You can optionally experiment here. // You can optionally experiment here.
} }
@@ -43,18 +23,4 @@ mod tests {
let ans = vec_loop(&input); let ans = vec_loop(&input);
assert_eq!(ans, [4, 8, 12, 16, 20]); assert_eq!(ans, [4, 8, 12, 16, 20]);
} }
#[test]
fn test_vec_map_example() {
let input = [1, 2, 3];
let ans = vec_map_example(&input);
assert_eq!(ans, [2, 3, 4]);
}
#[test]
fn test_vec_map() {
let input = [2, 4, 6, 8, 10];
let ans = vec_map(&input);
assert_eq!(ans, [4, 8, 12, 16, 20]);
}
} }

View File

@@ -318,16 +318,7 @@ of the Rust book to learn more."""
name = "vecs2" name = "vecs2"
dir = "05_vecs" dir = "05_vecs"
hint = """ hint = """
In the first function, we create an empty vector and want to push new elements Use the `.push()` method on the vector to push new elements to it."""
to it.
In the second function, we map the values of the input and collect them into
a vector.
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 # MOVE SEMANTICS

View File

@@ -8,22 +8,6 @@ fn vec_loop(input: &[i32]) -> Vec<i32> {
output output
} }
fn vec_map_example(input: &[i32]) -> Vec<i32> {
// An example of collecting a vector after mapping.
// We map each element of the `input` slice to its value plus 1.
// If the input is `[1, 2, 3]`, the output is `[2, 3, 4]`.
input.iter().map(|element| element + 1).collect()
}
fn vec_map(input: &[i32]) -> Vec<i32> {
// We will dive deeper into iterators, but for now, this is all what you
// had to do!
// Advanced note: This method is more efficient because it automatically
// preallocates enough capacity. This can be done manually in `vec_loop`
// using `Vec::with_capacity(input.len())` instead of `Vec::new()`.
input.iter().map(|element| 2 * element).collect()
}
fn main() { fn main() {
// You can optionally experiment here. // You can optionally experiment here.
} }
@@ -38,18 +22,4 @@ mod tests {
let ans = vec_loop(&input); let ans = vec_loop(&input);
assert_eq!(ans, [4, 8, 12, 16, 20]); assert_eq!(ans, [4, 8, 12, 16, 20]);
} }
#[test]
fn test_vec_map_example() {
let input = [1, 2, 3];
let ans = vec_map_example(&input);
assert_eq!(ans, [2, 3, 4]);
}
#[test]
fn test_vec_map() {
let input = [2, 4, 6, 8, 10];
let ans = vec_map(&input);
assert_eq!(ans, [4, 8, 12, 16, 20]);
}
} }