fix: update leaf cache when create new elem by del

This commit is contained in:
Zixuan Chen 2022-08-12 11:30:08 +08:00
parent c8a83fe676
commit e30ba86653
2 changed files with 20 additions and 7 deletions

View file

@ -209,6 +209,10 @@ impl<'a, T: Rle, A: RleTreeTrait<T>> LeafNode<'a, T, A> {
}
A::update_cache_leaf(self);
if let Err(new) = &mut result {
A::update_cache_leaf(&mut *new);
}
result
}

View file

@ -5,6 +5,11 @@ use crate::rle_tree::tree_trait::Position;
use super::super::*;
use std::ops::Range;
#[ctor]
fn init_color_backtrace() {
color_backtrace::install();
}
#[derive(Debug)]
struct RangeTreeTrait;
impl RleTreeTrait<Range<usize>> for RangeTreeTrait {
@ -196,13 +201,17 @@ fn delete_that_causes_removing_layers() {
}
tree.debug_check();
tree.delete_range(Some(1), None);
dbg!(tree);
}
#[ctor]
fn init_color_backtrace() {
color_backtrace::install();
}
#[test]
fn delete_that_causes_increase_levels() {}
fn delete_that_causes_increase_levels() {
let mut t: RleTree<Range<usize>, RangeTreeTrait> = RleTree::new();
let tree = t.get_mut();
tree.insert(0, 0..100);
for i in 0..50 {
tree.delete_range(Some(i), Some(i + 1));
tree.debug_check();
}
dbg!(tree);
}