pub struct RollingReference { /* private fields */ }Expand description
Sliding window of reference curves with incrementally maintained sorted columns.
When a new curve is pushed and the window is at capacity, the oldest curve
is evicted. For each time point the old value is removed (binary-search +
Vec::remove) and the new value is inserted (binary-search + Vec::insert).
Complexity per push: O(T × N) due to element shifting in the sorted vectors.
Implementations§
Source§impl RollingReference
impl RollingReference
Sourcepub fn new(capacity: usize, n_points: usize) -> Self
pub fn new(capacity: usize, n_points: usize) -> Self
Create an empty rolling window.
capacity– maximum number of curves in the window (must be ≥ 1).n_points– number of evaluation points per curve.
Sourcepub fn push(&mut self, curve: &[f64]) -> Option<Vec<f64>>
pub fn push(&mut self, curve: &[f64]) -> Option<Vec<f64>>
Push a new curve into the window.
If the window is at capacity, the oldest curve is evicted and returned. For each time point, the sorted column is updated incrementally.
Sourcepub fn snapshot(&self) -> SortedReferenceState
pub fn snapshot(&self) -> SortedReferenceState
Take a snapshot of the current sorted reference state.
This clones the sorted columns. For repeated queries, prefer
mbd_one which queries the window directly.
Auto Trait Implementations§
impl Freeze for RollingReference
impl RefUnwindSafe for RollingReference
impl Send for RollingReference
impl Sync for RollingReference
impl Unpin for RollingReference
impl UnsafeUnpin for RollingReference
impl UnwindSafe for RollingReference
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.