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:
@@ -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
|
||||||
|
@@ -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]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user