#[derive(PartialEq,Debug)]
pub struct Shoe {
size: u32,
style: String,
}
pub fn get_my_size(shoes: Vec<Shoe>,size:u32) -> Vec<Shoe>{
shoes.into_iter().filter(|ss| ss.size==size).collect()
}
#[derive(Debug)]
pub struct Counter{
count:u32
}
impl Counter {
pub fn new ()->Counter{
Counter { count: 0 }
}
}
impl Iterator for Counter {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> {
self.count+=1;
if self.count <4 {
Some(self.count)
}else{
None
}
}
}
#[test]
fn testShow (){
let shoes = vec![
Shoe{size:10,style:"牛逼".to_string()},
Shoe{size:12,style:"小昌子".to_string()},
Shoe{size:10,style:"邓".to_string()},
];
let my_size = get_my_size(shoes, 10);
println!("{:#?}",my_size);
println!("-------------------\n");
let mut counter = Counter::new();
let mut cter= Counter::new();
println!("{:#?}",cter.zip(Counter::new().skip(1)));
assert_eq!(Some(1),counter.next());
assert_eq!(Some(2),counter.next());
assert_eq!(Some(3),counter.next());
assert_eq!(None,counter.next());
println!("{:#?} ",counter);
}