Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::marker::PhantomData;
- #[allow(dead_code)]
- struct Example {
- value: Vec<u8>,
- }
- struct IteratorExample<'a> {
- value: &'a [u8],
- }
- impl<'a> Iterator for IteratorExample<'a> {
- type Item = &'a [u8];
- fn next(&mut self) -> Option<Self::Item> {
- // а такой код не работает
- Some(&self.value[..3])
- // None
- }
- }
- impl<'a> IntoIterator for &'a Example {
- type Item = &'a [u8];
- type IntoIter = IteratorExample<'a>;
- fn into_iter(self) -> Self::IntoIter {
- IteratorExample {
- value: &self.value
- }
- }
- }
- fn main() {
- let mut der = Example {
- value: vec![0, 1, 2, 3, 4, 5, 6, 7],
- };
- let mut iter = der.into_iter();
- println!("{:?}", iter.next());
- println!("{:?}", iter.next());
- println!("{:?}", iter.next());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement