From 6188315b518547463359ae2a0b5a8b7b077739cb Mon Sep 17 00:00:00 2001 From: Egor Suvorov Date: Thu, 24 Nov 2022 03:45:02 +0200 Subject: [PATCH] persistent_range_query: more refs --- libs/persistent_range_query/src/lib.rs | 4 ++-- libs/persistent_range_query/src/naive.rs | 8 ++++---- .../persistent_range_query/src/segment_tree.rs | 12 ++++++------ libs/persistent_range_query/tests/rsq_test.rs | 18 +++++++++--------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/libs/persistent_range_query/src/lib.rs b/libs/persistent_range_query/src/lib.rs index 03c9b27377..cd12c9076c 100644 --- a/libs/persistent_range_query/src/lib.rs +++ b/libs/persistent_range_query/src/lib.rs @@ -46,7 +46,7 @@ pub trait RangeModification { } pub trait VecReadableVersion, Key> { - fn get(&self, keys: Range) -> Modification::Result; + fn get(&self, keys: &Range) -> Modification::Result; } // TODO: use trait alias when stabilized @@ -73,6 +73,6 @@ pub trait PersistentVecStorage< type FrozenVersion: VecFrozenVersion; - fn modify(&mut self, keys: Range, modification: Modification); + fn modify(&mut self, keys: &Range, modification: &Modification); fn freeze(&mut self) -> Self::FrozenVersion; } diff --git a/libs/persistent_range_query/src/naive.rs b/libs/persistent_range_query/src/naive.rs index d3d1f601ec..9dfceb1bbd 100644 --- a/libs/persistent_range_query/src/naive.rs +++ b/libs/persistent_range_query/src/naive.rs @@ -19,7 +19,7 @@ pub trait IndexableKey: Clone { fn get, Key: IndexableKey>( all_keys: &Range, values: &Vec, - keys: Range, + keys: &Range, ) -> Modification::Result { let mut result = Modification::Result::new_for_empty_range(); let mut result_range = keys.start.clone()..keys.start.clone(); @@ -36,7 +36,7 @@ fn get, Key: IndexableKey>( impl, Key: IndexableKey> VecReadableVersion for NaiveFrozenVersion { - fn get(&self, keys: Range) -> Modification::Result { + fn get(&self, keys: &Range) -> Modification::Result { get::(&self.all_keys, &self.values, keys) } } @@ -71,7 +71,7 @@ impl< Key: IndexableKey, > VecReadableVersion for NaiveVecStorage { - fn get(&self, keys: Range) -> Modification::Result { + fn get(&self, keys: &Range) -> Modification::Result { get::(&self.all_keys, &self.last_version, keys) } } @@ -97,7 +97,7 @@ impl< type FrozenVersion = NaiveFrozenVersion; - fn modify(&mut self, keys: Range, modification: Modification) { + fn modify(&mut self, keys: &Range, modification: &Modification) { for index in IndexableKey::index(&self.all_keys, &keys.start) ..IndexableKey::index(&self.all_keys, &keys.end) { diff --git a/libs/persistent_range_query/src/segment_tree.rs b/libs/persistent_range_query/src/segment_tree.rs index ef63e513db..fcbfb3560c 100644 --- a/libs/persistent_range_query/src/segment_tree.rs +++ b/libs/persistent_range_query/src/segment_tree.rs @@ -194,12 +194,12 @@ impl< > VecReadableVersion for PersistentSegmentTreeVersion { - fn get(&self, keys: Range) -> Modification::Result { + fn get(&self, keys: &Range) -> Modification::Result { get( &mut self.root.clone(), // TODO: do not always force a branch &self.all_keys, self.initializer.as_ref(), - &keys, + keys, ) } } @@ -217,7 +217,7 @@ impl< > VecReadableVersion for PersistentSegmentTree { - fn get(&self, keys: Range) -> Modification::Result { + fn get(&self, keys: &Range) -> Modification::Result { self.0.get(keys) } } @@ -239,13 +239,13 @@ impl< type FrozenVersion = PersistentSegmentTreeVersion; - fn modify(&mut self, keys: Range, modification: Modification) { + fn modify(&mut self, keys: &Range, modification: &Modification) { modify( &mut self.0.root, // TODO: do not always force a branch &self.0.all_keys, self.0.initializer.as_ref(), - &keys, - &modification, + keys, + modification, ) } diff --git a/libs/persistent_range_query/tests/rsq_test.rs b/libs/persistent_range_query/tests/rsq_test.rs index ee02ed7b1d..a12c05cc19 100644 --- a/libs/persistent_range_query/tests/rsq_test.rs +++ b/libs/persistent_range_query/tests/rsq_test.rs @@ -34,20 +34,20 @@ fn test_storage< S: PersistentVecStorage, SameElementsInitializer, K>, >() { let mut s = S::new(K(0)..K(12), SameElementsInitializer::new(0i32)); - assert_eq!(*s.get(K(0)..K(12)).sum(), 0); + assert_eq!(*s.get(&(K(0)..K(12))).sum(), 0); - s.modify(K(2)..K(5), AddAssignModification::Add(3)); - assert_eq!(*s.get(K(0)..K(12)).sum(), 3 + 3 + 3); + s.modify(&(K(2)..K(5)), &AddAssignModification::Add(3)); + assert_eq!(*s.get(&(K(0)..K(12))).sum(), 3 + 3 + 3); let s_old = s.freeze(); - s.modify(K(3)..K(6), AddAssignModification::Assign(10)); - assert_eq!(*s.get(K(0)..K(12)).sum(), 3 + 10 + 10 + 10); + s.modify(&(K(3)..K(6)), &AddAssignModification::Assign(10)); + assert_eq!(*s.get(&(K(0)..K(12))).sum(), 3 + 10 + 10 + 10); - s.modify(K(4)..K(7), AddAssignModification::Add(2)); - assert_eq!(*s.get(K(0)..K(12)).sum(), 3 + 10 + 12 + 12 + 2); + s.modify(&(K(4)..K(7)), &AddAssignModification::Add(2)); + assert_eq!(*s.get(&(K(0)..K(12))).sum(), 3 + 10 + 12 + 12 + 2); - assert_eq!(*s.get(K(4)..K(6)).sum(), 12 + 12); - assert_eq!(*s_old.get(K(4)..K(6)).sum(), 3); + assert_eq!(*s.get(&(K(4)..K(6))).sum(), 12 + 12); + assert_eq!(*s_old.get(&(K(4)..K(6))).sum(), 3); } #[test]