diff --git a/libs/persistent_range_query/src/lib.rs b/libs/persistent_range_query/src/lib.rs index da139a5a29..cef8d65806 100644 --- a/libs/persistent_range_query/src/lib.rs +++ b/libs/persistent_range_query/src/lib.rs @@ -36,6 +36,8 @@ pub trait RangeModification { type Result: RangeQueryResult; fn no_op() -> Self; + fn is_no_op(&self) -> bool; + fn is_reinitialization(&self) -> bool; fn apply(&self, result: &mut Self::Result, range: &Range); fn compose(later: &Self, earlier: &mut Self); } diff --git a/libs/persistent_range_query/src/ops/rsq.rs b/libs/persistent_range_query/src/ops/rsq.rs index 5d8e2dfd86..8158d8fe03 100644 --- a/libs/persistent_range_query/src/ops/rsq.rs +++ b/libs/persistent_range_query/src/ops/rsq.rs @@ -76,6 +76,20 @@ where AddAssignModification::None } + fn is_no_op(&self) -> bool { + match self { + AddAssignModification::None => true, + _ => false, + } + } + + fn is_reinitialization(&self) -> bool { + match self { + AddAssignModification::Assign(_) => true, + _ => false, + } + } + fn apply<'a>(&self, result: &'a mut SumResult, range: &Range) { use AddAssignModification::*; match self {