mirror of
https://github.com/notohh/rustlings.git
synced 2024-11-22 14:02:22 -05:00
feat: Added iterators1.rs exercise
This commit is contained in:
parent
c4853ee6bb
commit
9642f5a3f6
3 changed files with 45 additions and 2 deletions
|
@ -3,5 +3,3 @@ For the Box exercise check out the chapter [Using Box to Point to Data on the He
|
||||||
For the Arc exercise check out the chapter [Shared-State Concurrency](https://doc.rust-lang.org/book/ch16-03-shared-state.html) of the Rust Book.
|
For the Arc exercise check out the chapter [Shared-State Concurrency](https://doc.rust-lang.org/book/ch16-03-shared-state.html) of the Rust Book.
|
||||||
|
|
||||||
For the Iterator exercise check out the chapters [Iterator](https://doc.rust-lang.org/book/ch13-02-iterators.html) of the Rust Book and the [Iterator documentation](https://doc.rust-lang.org/stable/std/iter/).
|
For the Iterator exercise check out the chapters [Iterator](https://doc.rust-lang.org/book/ch13-02-iterators.html) of the Rust Book and the [Iterator documentation](https://doc.rust-lang.org/stable/std/iter/).
|
||||||
Do not adjust your monitors-- iterators1.rs is indeed missing. Iterators is a challenging topic, so we're leaving space for a simpler exercise!
|
|
||||||
|
|
||||||
|
|
24
exercises/standard_library_types/iterators1.rs
Normal file
24
exercises/standard_library_types/iterators1.rs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
// iterators1.rs
|
||||||
|
//
|
||||||
|
// Make me compile by filling in the `???`s
|
||||||
|
//
|
||||||
|
// When performing operations on elements within a collection, iterators are essential.
|
||||||
|
// This module helps you get familiar with the structure of using an iterator and
|
||||||
|
// how to go through elements within an iterable collection.
|
||||||
|
//
|
||||||
|
// Execute `rustlings hint iterators1` for hints :D
|
||||||
|
|
||||||
|
// I AM NOT DONE
|
||||||
|
|
||||||
|
fn main () {
|
||||||
|
let my_fav_fruits = vec!["banana", "custard apple", "avocado", "peach", "raspberry"];
|
||||||
|
|
||||||
|
let mut my_iterable_fav_fruits = ???; // TODO: Step 1
|
||||||
|
|
||||||
|
assert_eq!(my_iterable_fav_fruits.next(), Some(&"banana"));
|
||||||
|
assert_eq!(my_iterable_fav_fruits.next(), ???); // TODO: Step 2
|
||||||
|
assert_eq!(my_iterable_fav_fruits.next(), Some(&"avocado"));
|
||||||
|
assert_eq!(my_iterable_fav_fruits.next(), ???); // TODO: Step 2.1
|
||||||
|
assert_eq!(my_iterable_fav_fruits.next(), Some(&"raspberry"));
|
||||||
|
assert_eq!(my_iterable_fav_fruits.next(), ???); // TODO: Step 3
|
||||||
|
}
|
21
info.toml
21
info.toml
|
@ -644,6 +644,27 @@ inside the loop but still in the main thread.
|
||||||
`child_numbers` should be a clone of the Arc of the numbers instead of a
|
`child_numbers` should be a clone of the Arc of the numbers instead of a
|
||||||
thread-local copy of the numbers."""
|
thread-local copy of the numbers."""
|
||||||
|
|
||||||
|
[[exercises]]
|
||||||
|
name = "iterators1"
|
||||||
|
path = "exercises/standard_library_types/iterators1.rs"
|
||||||
|
mode = "compile"
|
||||||
|
hint = """
|
||||||
|
Step 1:
|
||||||
|
We need to apply something to the collection `my_fav_fruits` before we start to go through
|
||||||
|
it. What could that be? Take a look at the struct definition for a vector for inspiration:
|
||||||
|
https://doc.rust-lang.org/std/vec/struct.Vec.html.
|
||||||
|
|
||||||
|
|
||||||
|
Step 2 & step 2.1:
|
||||||
|
Very similar to the lines above an below. You've got this!
|
||||||
|
|
||||||
|
|
||||||
|
Step 3:
|
||||||
|
An iterator goes through all elements in a collection, but what if we've run out of
|
||||||
|
elements? What should we expect here? If you're stuck, take a look at
|
||||||
|
https://doc.rust-lang.org/std/iter/trait.Iterator.html for some ideas.
|
||||||
|
"""
|
||||||
|
|
||||||
[[exercises]]
|
[[exercises]]
|
||||||
name = "iterators2"
|
name = "iterators2"
|
||||||
path = "exercises/standard_library_types/iterators2.rs"
|
path = "exercises/standard_library_types/iterators2.rs"
|
||||||
|
|
Loading…
Reference in a new issue