Skip to content

Commit 97b3a19

Browse files
committed
progress, but names TBD
1 parent 9210f66 commit 97b3a19

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

src/edge_differences.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::edge_differences::private::EdgeDifferenceIteration;
12
use crate::EdgeId;
23
use crate::NodeId;
34
use crate::Position;
@@ -116,6 +117,46 @@ pub struct EdgeDifferences<'ts> {
116117
right: f64,
117118
}
118119

120+
pub struct X<'ts, T: EdgeDifferenceIteration> {
121+
edges_left: &'ts [Position],
122+
edges_right: &'ts [Position],
123+
edges_parent: &'ts [NodeId],
124+
edges_child: &'ts [NodeId],
125+
removals: (usize, usize),
126+
marker: std::marker::PhantomData<T>,
127+
}
128+
129+
impl<'ts, T: EdgeDifferenceIteration> Iterator for X<'ts, T> {
130+
type Item = EdgeDifference<T>;
131+
fn next(&mut self) -> Option<Self::Item> {
132+
todo!()
133+
}
134+
}
135+
136+
impl<'ts> EdgeDifferences<'ts> {
137+
pub fn removals(&self) -> impl Iterator<Item = EdgeRemoval> + '_ {
138+
X {
139+
edges_left: self.edges_left,
140+
edges_right: self.edges_right,
141+
edges_parent: self.edges_parent,
142+
edges_child: self.edges_child,
143+
removals: self.removals,
144+
marker: std::marker::PhantomData::<Removal> {},
145+
}
146+
}
147+
148+
pub fn insertions(&self) -> impl Iterator<Item = EdgeInsertion> + '_ {
149+
X {
150+
edges_left: self.edges_left,
151+
edges_right: self.edges_right,
152+
edges_parent: self.edges_parent,
153+
edges_child: self.edges_child,
154+
removals: self.removals,
155+
marker: std::marker::PhantomData::<Insertion> {},
156+
}
157+
}
158+
}
159+
119160
fn update_right(
120161
right: f64,
121162
index: usize,

0 commit comments

Comments
 (0)