ch13.02 done
This commit is contained in:
parent
1525fd848c
commit
aa4818e9e7
@ -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() {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user