Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub struct A {
- pub val: Vec<u32>,
- }
- impl A {
- pub fn iter(&self) -> AIter {
- AIter {
- a: self,
- index: 0,
- }
- }
- }
- pub struct AIter<'a> {
- a: &'a A,
- index: usize,
- }
- pub struct AIterMut<'a> {
- a: &'a mut A,
- index: usize,
- }
- impl<'a> Iterator for AIter<'a> {
- type Item = &'a u32;
- fn next(&mut self) -> Option<Self::Item> {
- let item = if self.a.val.len() > self.index {
- Some(&self.a.val[self.index])
- } else {
- None
- };
- self.index += 1;
- item
- }
- }
- impl<'a> Iterator for AIterMut<'a> {
- type Item = &'a mut u32;
- fn next(&mut self) -> Option<Self::Item> {
- let item = if self.a.val.len() > self.index {
- Some(&mut self.a.val[self.index])
- } else {
- None
- };
- self.index += 1;
- item
- }
- }
- fn main() {
- let a: Vec<u32> = (0..10).collect();
- let struct_a = A { val: a };
- let iter = struct_a.iter();
- iter.for_each(|x| println!("{}", x));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement