Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. #[derive(Debug)]
  2. struct Pixel{
  3. r:u8,
  4. g:u8,
  5. b:u8,
  6. }
  7.  
  8. impl IntoIterator for Pixel{
  9. type Item = u8;
  10. type IntoIter = PixelIntoIterator;
  11.  
  12. fn into_iter(self) -> Self::IntoIter{
  13. PixelIntoIterator{
  14. pixel:self,
  15. index:0,
  16. }
  17. }
  18.  
  19. }
  20.  
  21.  
  22. struct PixelIntoIterator{
  23. pixel:Pixel,
  24. index:u8,
  25. }
  26.  
  27.  
  28. impl Iterator for PixelIntoIterator{
  29. type Item = u8;
  30.  
  31. fn next(&mut self) -> Option<u8>{
  32.  
  33.  
  34. let result = match self.index{
  35. 0 => { self.pixel.r},
  36. 1 => { self.pixel.g},
  37. 2 => { self.pixel.b},
  38. _ => { return None},
  39. };
  40.  
  41. self.index +=1;
  42. Some(result)
  43. }
  44.  
  45.  
  46. }
  47.  
  48. fn main(){
  49. let p = Pixel{
  50. r:45,
  51. g:34,
  52. b:33 };
  53.  
  54. let p1 = Pixel{
  55. r:4,
  56. g:3,
  57. b:39 };
  58.  
  59. let mut v = vec!();
  60.  
  61. v.push(p);
  62. v.push(p1);
  63.  
  64. //for loop on pixel
  65. println!("This is for loop on Pixel struct");
  66.  
  67.  
  68. for j in v{
  69.  
  70. for i in j{
  71. println!("{}",i);
  72. }
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement