summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exercises/18_iterators/iterators1.rs21
-rw-r--r--rustlings-macros/info.toml15
-rw-r--r--solutions/18_iterators/iterators1.rs27
3 files changed, 36 insertions, 27 deletions
diff --git a/exercises/18_iterators/iterators1.rs b/exercises/18_iterators/iterators1.rs
index 52b704d..86278a4 100644
--- a/exercises/18_iterators/iterators1.rs
+++ b/exercises/18_iterators/iterators1.rs
@@ -1,8 +1,6 @@
// 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.
-//
-// Make me compile by filling in the `???`s
fn main() {
// You can optionally experiment here.
@@ -10,19 +8,18 @@ fn main() {
#[cfg(test)]
mod tests {
- use super::*;
-
#[test]
fn iterators() {
- let my_fav_fruits = vec!["banana", "custard apple", "avocado", "peach", "raspberry"];
+ let my_fav_fruits = ["banana", "custard apple", "avocado", "peach", "raspberry"];
- let mut my_iterable_fav_fruits = ???; // TODO: Step 1
+ // TODO: Create an iterator over the array.
+ let mut fav_fruits_iterator = ???;
- 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 3
- assert_eq!(my_iterable_fav_fruits.next(), Some(&"raspberry"));
- assert_eq!(my_iterable_fav_fruits.next(), ???); // TODO: Step 4
+ assert_eq!(fav_fruits_iterator.next(), Some(&"banana"));
+ assert_eq!(fav_fruits_iterator.next(), ???); // TODO: Replace `???`
+ assert_eq!(fav_fruits_iterator.next(), Some(&"avocado"));
+ assert_eq!(fav_fruits_iterator.next(), ???); // TODO: Replace `???`
+ assert_eq!(fav_fruits_iterator.next(), Some(&"raspberry"));
+ assert_eq!(fav_fruits_iterator.next(), ???); // TODO: Replace `???`
}
}
diff --git a/rustlings-macros/info.toml b/rustlings-macros/info.toml
index 5c24cd3..5e93986 100644
--- a/rustlings-macros/info.toml
+++ b/rustlings-macros/info.toml
@@ -886,22 +886,9 @@ https://doc.rust-lang.org/stable/book/ch11-01-writing-tests.html#checking-for-pa
name = "iterators1"
dir = "18_iterators"
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 3:
-
-Very similar to the lines above and below. You've got this!
-
-Step 4:
-
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."""
+https://doc.rust-lang.org/std/iter/trait.Iterator.html"""
[[exercises]]
name = "iterators2"
diff --git a/solutions/18_iterators/iterators1.rs b/solutions/18_iterators/iterators1.rs
index 4e18198..93a6008 100644
--- a/solutions/18_iterators/iterators1.rs
+++ b/solutions/18_iterators/iterators1.rs
@@ -1 +1,26 @@
-// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
+// 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.
+
+fn main() {
+ // You can optionally experiment here.
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn iterators() {
+ let my_fav_fruits = ["banana", "custard apple", "avocado", "peach", "raspberry"];
+
+ // Create an iterator over the array.
+ let mut fav_fruits_iterator = my_fav_fruits.iter();
+
+ assert_eq!(fav_fruits_iterator.next(), Some(&"banana"));
+ assert_eq!(fav_fruits_iterator.next(), Some(&"custard apple"));
+ assert_eq!(fav_fruits_iterator.next(), Some(&"avocado"));
+ assert_eq!(fav_fruits_iterator.next(), Some(&"peach"));
+ assert_eq!(fav_fruits_iterator.next(), Some(&"raspberry"));
+ assert_eq!(fav_fruits_iterator.next(), None);
+ // ^^^^ reached the end
+ }
+}