data_structures/linked_list/
iter.rs

1use super::node::*;
2
3pub struct Iter<'a, T>(pub &'a Next<T>);
4
5impl<'a, T> Iterator for Iter<'a, T> {
6    type Item = &'a T;
7
8    fn next<'b>(&'b mut self) -> Option<&'a T> {
9        (**(*self).0).as_ref().map(|node| {
10            (*self).0 = &(*node).next;
11            &(*node).data
12        })
13    }
14}