pub struct EpochArray { /* private fields */ }
Expand description

An epoch counter array. This can be used to check if an index is current by comparing its entry in the epoch array to the current epoch. To unmark all values, the current epoch can be increased in O(1). Only overflows have to be handled by resetting all epoch counters.

Implementations§

source§

impl EpochArray

source

pub fn new(len: usize) -> Self

Create a new epoch array of given length where all values are outdated.

source

pub fn clear(&mut self)

Outdate all indices.

source

pub fn update(&mut self, index: usize) -> bool

Set the given index as current and returns true if the given index was current before, and false otherwise

Safety: Undefined behaviour if the index is out of bounds of the epoch array.

source

pub fn get(&self, index: usize) -> bool

Returns true if the given index is current, and false otherwise.

Safety: Undefined behaviour if the index is out of bounds of the epoch array.

source

pub fn get_and_update(&mut self, index: usize) -> bool

Updates the given index and returns true if the given index was current before, and false otherwise.

Safety: Undefined behaviour if the index is out of bounds of the epoch array.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V