From bc57f01e181aaa80990cde96a78b6dd2dc0514fe Mon Sep 17 00:00:00 2001 From: Zixuan Chen Date: Thu, 8 Dec 2022 23:03:01 +0800 Subject: [PATCH] fix: simplify op set --- .../src/container/text/tracker/yata_impl.rs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/loro-core/src/container/text/tracker/yata_impl.rs b/crates/loro-core/src/container/text/tracker/yata_impl.rs index 4de14903..eb16200c 100644 --- a/crates/loro-core/src/container/text/tracker/yata_impl.rs +++ b/crates/loro-core/src/container/text/tracker/yata_impl.rs @@ -1,5 +1,5 @@ #![allow(unused)] -use std::ptr::NonNull; +use std::{ops::Range, ptr::NonNull}; use crdt_list::{ crdt::{GetOp, ListCrdt, OpSet}, @@ -7,7 +7,7 @@ use crdt_list::{ }; use rle::{ range_map::{RangeMap, WithStartEnd}, - rle_tree::{iter::IterMut, node::LeafNode, SafeCursorMut}, + rle_tree::{iter::IterMut, node::LeafNode, BumpMode, SafeCursorMut}, HasLength, }; @@ -22,23 +22,23 @@ use super::{ // TODO: may use a simpler data structure here #[derive(Default, Debug)] pub struct OpSpanSet { - map: RangeMap>, + map: Vec>, } impl OpSet for OpSpanSet { fn insert(&mut self, value: &YSpan) { - self.map.set_small_range( - value.id.into(), - WithStartEnd { - start: value.id.into(), - end: value.id.inc(value.atom_len() as i32).into(), - value: true, - }, - ) + let start: u128 = value.id.into(); + self.map.push(start..start + value.atom_len() as u128); } fn contain(&self, id: ID) -> bool { - self.map.has(id.into()) + for range in &self.map { + if range.contains(&(id.into())) { + return true; + } + } + + false } fn clear(&mut self) {