priority_matrix/
iter.rs

1//! Iterator types.
2
3use std::hash::Hash;
4
5pub struct Iter<'a, R, C, W>
6where
7    R: Eq + Hash,
8    C: Eq + Hash,
9    W: Ord,
10{
11    pub(crate) iter: priority_queue::core_iterators::Iter<'a, (R, C), W>,
12}
13
14impl<'a, R, C, W> Iterator for Iter<'a, R, C, W>
15where
16    R: Eq + Hash,
17    C: Eq + Hash,
18    W: Ord,
19{
20    type Item = (&'a R, &'a C, &'a W);
21
22    fn next(&mut self) -> Option<Self::Item> {
23        let ((row, col), weight) = self.iter.next()?;
24        Some((row, col, weight))
25    }
26}
27
28pub struct IntoIter<R, C, W>
29where
30    R: Eq + Hash,
31    C: Eq + Hash,
32    W: Ord,
33{
34    pub(crate) iter: priority_queue::core_iterators::IntoIter<(R, C), W>,
35}
36
37impl<R, C, W> Iterator for IntoIter<R, C, W>
38where
39    R: Eq + Hash,
40    C: Eq + Hash,
41    W: Ord,
42{
43    type Item = (R, C, W);
44
45    fn next(&mut self) -> Option<Self::Item> {
46        let ((row, col), weight) = self.iter.next()?;
47        Some((row, col, weight))
48    }
49}