Skip to main content

RollingSum

Struct RollingSum 

Source
pub struct RollingSum<T, const WINDOW: usize> { /* private fields */ }

Implementations§

Source§

impl<T, const WINDOW: usize> RollingSum<T, WINDOW>
where T: Default,

Source

pub const fn new(init: T, zero: T) -> Self

Source§

impl<T, const WINDOW: usize> RollingSum<T, WINDOW>

Source

pub fn add(&mut self, val: T)

Adds T to the rolling sum, displacing the oldest member if the window is full to capacity.

If adding T causes numerical overflow, subsequent calls to total will return None until window expirations cause underflow commensurate to the overflow.

§Panics

This function panics if the usize variable tracking the number of times the sum has overflowed itself overflows. A window should be sized such that this never occurs.

Source

pub fn total(&self) -> Option<&T>

Returns the accumulated total of all added values that fit within the rolling window’s capacity.

Returns None if the window has overflowed. In that case, it will return to Some(..) when the last element causing overflow is pushed out.

Trait Implementations§

Source§

impl<T: Debug, const WINDOW: usize> Debug for RollingSum<T, WINDOW>

Source§

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

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

impl<T, const W: usize> Default for RollingSum<T, W>
where T: Default,

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<T, const WINDOW: usize> Freeze for RollingSum<T, WINDOW>
where T: Freeze,

§

impl<T, const WINDOW: usize> RefUnwindSafe for RollingSum<T, WINDOW>
where T: RefUnwindSafe,

§

impl<T, const WINDOW: usize> Send for RollingSum<T, WINDOW>
where T: Send,

§

impl<T, const WINDOW: usize> Sync for RollingSum<T, WINDOW>
where T: Sync,

§

impl<T, const WINDOW: usize> Unpin for RollingSum<T, WINDOW>
where T: Unpin,

§

impl<T, const WINDOW: usize> UnsafeUnpin for RollingSum<T, WINDOW>
where T: UnsafeUnpin,

§

impl<T, const WINDOW: usize> UnwindSafe for RollingSum<T, WINDOW>
where T: 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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.