Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. use std::marker::PhantomData;
  2.  
  3. #[allow(dead_code)]
  4.  
  5. struct Example {
  6. value: Vec<u8>,
  7. }
  8.  
  9. struct IteratorExample<'a> {
  10. value: &'a [u8],
  11. }
  12.  
  13. impl<'a> Iterator for IteratorExample<'a> {
  14. type Item = &'a [u8];
  15.  
  16. fn next(&mut self) -> Option<Self::Item> {
  17. // а такой код не работает
  18. Some(&self.value[..3])
  19.  
  20. // None
  21. }
  22. }
  23.  
  24. impl<'a> IntoIterator for &'a Example {
  25. type Item = &'a [u8];
  26. type IntoIter = IteratorExample<'a>;
  27.  
  28. fn into_iter(self) -> Self::IntoIter {
  29. IteratorExample {
  30. value: &self.value
  31. }
  32. }
  33.  
  34. }
  35.  
  36. fn main() {
  37. let mut der = Example {
  38. value: vec![0, 1, 2, 3, 4, 5, 6, 7],
  39. };
  40. let mut iter = der.into_iter();
  41. println!("{:?}", iter.next());
  42. println!("{:?}", iter.next());
  43. println!("{:?}", iter.next());
  44.  
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement