Start work on partial rendering for List element
Co-Authored-By: Nathan Sobo <nathan@zed.dev> Co-Authored-By: Antonio Scandurra <me@as-cii.com>
This commit is contained in:
parent
2db49ce27f
commit
477740360d
6 changed files with 473 additions and 265 deletions
|
@ -10,6 +10,22 @@ struct StackEntry<'a, T: Item, S, U> {
|
|||
sum_dimension: U,
|
||||
}
|
||||
|
||||
impl<'a, T, S, U> StackEntry<'a, T, S, U>
|
||||
where
|
||||
T: Item,
|
||||
S: SeekDimension<'a, T::Summary>,
|
||||
U: SeekDimension<'a, T::Summary>,
|
||||
{
|
||||
fn swap_dimensions(self) -> StackEntry<'a, T, U, S> {
|
||||
StackEntry {
|
||||
tree: self.tree,
|
||||
index: self.index,
|
||||
seek_dimension: self.sum_dimension,
|
||||
sum_dimension: self.seek_dimension,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Cursor<'a, T: Item, S, U> {
|
||||
tree: &'a SumTree<T>,
|
||||
|
@ -602,6 +618,28 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, T, S, U> Cursor<'a, T, S, U>
|
||||
where
|
||||
T: Item,
|
||||
S: SeekDimension<'a, T::Summary>,
|
||||
U: SeekDimension<'a, T::Summary>,
|
||||
{
|
||||
pub fn swap_dimensions(self) -> Cursor<'a, T, U, S> {
|
||||
Cursor {
|
||||
tree: self.tree,
|
||||
stack: self
|
||||
.stack
|
||||
.into_iter()
|
||||
.map(StackEntry::swap_dimensions)
|
||||
.collect(),
|
||||
seek_dimension: self.sum_dimension,
|
||||
sum_dimension: self.seek_dimension,
|
||||
did_seek: self.did_seek,
|
||||
at_end: self.at_end,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct FilterCursor<'a, F: Fn(&T::Summary) -> bool, T: Item, U> {
|
||||
cursor: Cursor<'a, T, (), U>,
|
||||
filter_node: F,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue