only_every

Struct OnlyEvery

Source
pub struct OnlyEvery { /* private fields */ }
Expand description

A simple rate limiter which allows one element through on a given interval.

To use, call check and do whatever you want to do when it returns true.

The interval can be changed, and this will do what you expect as long as usage is only single-threaded. In multi-threaded programs, it is guaranteed that no execution can happen faster than the fastest interval passed to check, with behavior returning to normal once all threads are again passing the same value.

Implementations§

Source§

impl OnlyEvery

Source

pub fn new() -> OnlyEvery

Source

pub fn check(&self, interval: Duration) -> bool

Check whether some code can execute, and record the time of the last successful check.

If this function returns true, the update has already been recorded as taking place.

interval is rounded up to the next ms.

Auto Trait Implementations§

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.