ch13.02 done

This commit is contained in:
Rowan Torbitzky-Lane 2025-03-31 13:16:34 -05:00
parent 1525fd848c
commit aa4818e9e7
2 changed files with 49 additions and 3 deletions

View File

@ -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() {

View File

@ -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