1crate::ix!();
2
3pub struct NodeIdRange {
4 start: usize,
5 len: usize,
6}
7
8impl NodeIdRange {
9
10 pub fn len(&self) -> usize {
11 self.len
12 }
13
14 pub fn range(&self) -> std::ops::Range<NodeId> {
15 std::ops::Range {
16 start: nodeid![self.start],
17 end: nodeid![self.start + self.len]
18 }
19 }
20}
21
22impl IntoIterator for NodeIdRange {
23
24 type Item = NodeId;
25 type IntoIter = std::vec::IntoIter<Self::Item>;
26
27 fn into_iter(self) -> Self::IntoIter {
28
29 let start = self.start;
30 let end = start + self.len;
31
32 let vec: Vec<NodeId> = (start..end).map(|x| NodeId::from(x)).collect();
33
34 vec.into_iter()
35 }
36}
37
38impl NodeIdRange {
39
40 pub fn new(start: usize, len: usize) -> Self {
41 Self {
42 start,
43 len,
44 }
45 }
46}