1use 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}