pub enum SeriesData {
Vec(Vec<DataPoint>),
Ring(RingBuffer<DataPoint>),
TimeSeries(RingBuffer<TimeSeriesPoint>),
Downsampled {
source: Box<SeriesData>,
factor: usize,
cache: Vec<DataPoint>,
source_version: u64,
},
}Expand description
Data storage backend for chart series.
Provides multiple storage options optimized for different use cases:
Vec- Standard vector for static or infrequently updated dataRing- Ring buffer for high-frequency streaming dataTimeSeries- Ring buffer with OHLC support for time seriesDownsampled- Downsampled view of another data source
Variants§
Vec(Vec<DataPoint>)
Standard vector storage.
Ring(RingBuffer<DataPoint>)
Ring buffer for streaming data.
TimeSeries(RingBuffer<TimeSeriesPoint>)
Time series with OHLC support.
Downsampled
Downsampled view of source data.
Implementations§
Source§impl SeriesData
impl SeriesData
Sourcepub fn time_series(capacity: usize) -> Self
pub fn time_series(capacity: usize) -> Self
Create a time series ring buffer with the specified capacity.
Sourcepub fn push(&mut self, point: DataPoint)
pub fn push(&mut self, point: DataPoint)
Push a data point (only works for Vec and Ring variants).
Sourcepub fn push_time_point(&mut self, point: TimeSeriesPoint)
pub fn push_time_point(&mut self, point: TimeSeriesPoint)
Push a time series point (only for TimeSeries variant).
Sourcepub fn iter(&self) -> SeriesDataIter<'_> ⓘ
pub fn iter(&self) -> SeriesDataIter<'_> ⓘ
Iterate over data points.
Sourcepub fn bounds(&self) -> Option<(DataPoint, DataPoint)>
pub fn bounds(&self) -> Option<(DataPoint, DataPoint)>
Get the bounds (min_x, min_y, max_x, max_y) of the data.
Sourcepub fn has_wrapped(&self) -> bool
pub fn has_wrapped(&self) -> bool
Check if the ring buffer has wrapped (data was overwritten).
Trait Implementations§
Source§impl Clone for SeriesData
impl Clone for SeriesData
Source§fn clone(&self) -> SeriesData
fn clone(&self) -> SeriesData
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SeriesData
impl Debug for SeriesData
Auto Trait Implementations§
impl Freeze for SeriesData
impl RefUnwindSafe for SeriesData
impl Send for SeriesData
impl Sync for SeriesData
impl Unpin for SeriesData
impl UnsafeUnpin for SeriesData
impl UnwindSafe for SeriesData
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more