Struct TimingWheel

Source
pub struct TimingWheel<T, R = MillisecondResolution>
where R: Resolution,
{ /* private fields */ }
Expand description

A hierarchical timing wheel with a given entry type and resolution.

Implementations§

Source§

impl<T, R> TimingWheel<T, R>
where R: Resolution,

Source

pub fn new() -> Self

Create a new timing wheel.

Source

pub fn insert(&mut self, entry: T, delay: Duration) -> Option<T>

Returns the entry if it has already expired.

Source

pub fn tick(&mut self) -> Vec<T>

Advance the timing wheel and collect all entries that have been expired.

Source

pub fn tick_with(&mut self, res: &mut Vec<T>)

Advance the timing wheel and collect all entries that have been expired.

Source

pub fn skip(&mut self, amount: u32)

Skip amount steps, note that this will succeed and no checks will take place.

Use TimingWheel::can_skip to determine if this function can be used without silently dropping any entries that have not been expired.

Source

pub fn can_skip(&self) -> u32

Returns how many steps can be skipped safely without missing entries.

Source

pub fn len(&self) -> usize

Return the amount of entries in the wheel.

Source

pub fn is_empty(&self) -> bool

Return whether the wheel is empty.

Source

pub fn gc(&mut self, threshold: usize)

Due to double buffering the overflow list is never shrunk.

This function can be used to shrink the overflow list if its capacity equals or is over the given threshold.

Trait Implementations§

Source§

impl<T: Debug, R> Debug for TimingWheel<T, R>
where R: Resolution + Debug,

Source§

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

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

impl<T, R> Default for TimingWheel<T, R>
where R: Resolution,

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<T, R> Freeze for TimingWheel<T, R>

§

impl<T, R> RefUnwindSafe for TimingWheel<T, R>

§

impl<T, R> Send for TimingWheel<T, R>
where R: Send, T: Send,

§

impl<T, R> Sync for TimingWheel<T, R>
where R: Sync, T: Sync,

§

impl<T, R> Unpin for TimingWheel<T, R>
where R: Unpin, T: Unpin,

§

impl<T, R> UnwindSafe for TimingWheel<T, R>
where R: UnwindSafe, 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.