Skip to main content

Ring

Struct Ring 

Source
pub struct Ring<const N: usize> { /* private fields */ }
Expand description

A ring buffer holding up to N f64 values.

Implementations§

Source§

impl<const N: usize> Ring<N>

Source

pub const fn new() -> Self

A new, empty ring.

Source

pub const fn is_full(&self) -> bool

Whether the ring holds N values.

Source

pub const fn len(&self) -> usize

Number of values currently held.

Source

pub const fn is_empty(&self) -> bool

Whether the ring holds no values.

Source

pub fn push(&mut self, x: f64) -> Option<f64>

Push x, overwriting the oldest slot once full.

Returns the evicted oldest value if the ring was already full, or None while still filling. The caller (SMA) subtracts the returned value from its rolling sum before adding x, matching the std subtract-then-add order.

Source

pub fn chrono_sum(&self) -> f64

Sum the held values oldest-to-newest.

When full this walks buf[head..] then buf[..head] — the exact chronological order (and thus the exact fold, starting from 0.0) that wickra-core reseeds its rolling sum with, so the reseed is bit-for-bit identical.

Trait Implementations§

Source§

impl<const N: usize> Clone for Ring<N>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<const N: usize> Debug for Ring<N>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const N: usize> Default for Ring<N>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<const N: usize> Freeze for Ring<N>
where [f64; N]: Freeze,

§

impl<const N: usize> RefUnwindSafe for Ring<N>
where [f64; N]: RefUnwindSafe,

§

impl<const N: usize> Send for Ring<N>
where [f64; N]: Send,

§

impl<const N: usize> Sync for Ring<N>
where [f64; N]: Sync,

§

impl<const N: usize> Unpin for Ring<N>
where [f64; N]: Unpin,

§

impl<const N: usize> UnsafeUnpin for Ring<N>
where [f64; N]: UnsafeUnpin,

§

impl<const N: usize> UnwindSafe for Ring<N>
where [f64; N]: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.