PiHao_learn_rust_crate_upload 0.1.0

My First Rust Terminal Project
Documentation
//! # My Crate
//! 
//! my crate 牛逼,这里的代码不必当真

#[derive(PartialEq,Debug)]
pub struct Shoe {
  size: u32,
  style: String,
}


/// 将数字 加 1
/// # Example
/// ```
/// get_my_size()
/// ```
/// 获取我的尺寸
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);

}