Skip to main content

Window

Struct Window 

Source
pub struct Window<P: AxisProfile> { /* private fields */ }
Expand description

A sliding window over a monoid: the fold of the last capacity pushed values, in push order, with each value folded at most twice.

back holds the newer values with back_fold their running fold; front holds suffix folds of the older values, oldest last, so the oldest value’s entry is the fold of everything in front. When front runs out the whole of back moves across as suffix folds. The window’s fold is front.last() ⊕ back_fold.

Implementations§

Source§

impl<P: AxisProfile> Window<P>

Source

pub fn new(capacity: usize) -> Self

An empty window that holds at most capacity values.

Source

pub fn len(&self) -> usize

Values in the window.

Source

pub fn is_empty(&self) -> bool

Whether the window holds nothing.

Source

pub fn push(&mut self, value: P)

Push the newest value, dropping the oldest when the window is full.

Source

pub fn fold(&self) -> P

The fold of the window, oldest to newest.

Auto Trait Implementations§

§

impl<P> Freeze for Window<P>
where Vec<P>: Freeze, P: Freeze,

§

impl<P> RefUnwindSafe for Window<P>

§

impl<P> Send for Window<P>
where Vec<P>: Send, P: Send,

§

impl<P> Sync for Window<P>
where Vec<P>: Sync, P: Sync,

§

impl<P> Unpin for Window<P>
where Vec<P>: Unpin, P: Unpin,

§

impl<P> UnsafeUnpin for Window<P>
where Vec<P>: UnsafeUnpin, P: UnsafeUnpin,

§

impl<P> UnwindSafe for Window<P>
where Vec<P>: UnwindSafe, P: 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.