diff --git a/ch13/iterators/src/lib.rs b/ch13/iterators/src/lib.rs
index 31c8b90..ee9b9e4 100644
--- a/ch13/iterators/src/lib.rs
+++ b/ch13/iterators/src/lib.rs
@@ -1,6 +1,51 @@
+// Using Closures that capture their environment
+#[derive(PartialEq, Debug)]
+struct Shoe {
+    size: u32,
+    style: String,
+}
+
+fn shoes_in_size(shoes: Vec<Shoe>, shoe_size: u32) -> Vec<Shoe> {
+    shoes.into_iter().filter(|s| s.size == shoe_size).collect()
+}
+
 #[cfg(test)]
 mod tests {
-    // use super::*;
+    use super::*;
+
+    #[test]
+    fn filters_by_size() {
+        let shoes = vec![
+            Shoe {
+                size: 10,
+                style: String::from("sneaker"),
+            },
+            Shoe {
+                size: 13,
+                style: String::from("sandal"),
+            },
+            Shoe {
+                size: 10,
+                style: String::from("boot"),
+            },
+        ];
+
+        let in_my_size = shoes_in_size(shoes, 10);
+
+        assert_eq!(
+            in_my_size,
+            vec![
+                Shoe {
+                    size: 10,
+                    style: String::from("sneaker")
+                },
+                Shoe {
+                    size: 10,
+                    style: String::from("boot")
+                },
+            ]
+        );
+    }
 
     #[test]
     fn iterator_demonstration() {
diff --git a/ch13/iterators/src/main.rs b/ch13/iterators/src/main.rs
index ed5ed1f..d362f1d 100644
--- a/ch13/iterators/src/main.rs
+++ b/ch13/iterators/src/main.rs
@@ -14,8 +14,9 @@ fn main() {
     let v1: Vec<i32> = vec![1, 2, 3];
     v1.iter().map(|x| x + 1);
 
-    // stopped here:
-    // https://rust-book.cs.brown.edu/ch13-02-iterators.html#methods-that-produce-other-iterators
+    let v1: Vec<i32> = vec![1, 2, 3];
+    let v2: Vec<_> = v1.iter().map(|x| x + 1).collect();
+    assert_eq!(v2, vec![2, 3, 4]);
 }
 
 // the iterator trait and the next method