Struct Group

Source
pub struct Group<T, E>
where T: Clone,
{ /* private fields */ }
Expand description

Group represents a class of work and creates a space in which units of work can be executed with duplicate suppression.

Implementations§

Source§

impl<T, E> Group<T, E>
where T: Clone,

Source

pub fn new() -> Group<T, E>

Create a new Group to do work with.

Source

pub async fn work( &self, key: &str, fut: impl Future<Output = Result<T, E>>, ) -> (Option<T>, Option<E>, bool)

Execute and return the value for a given function, making sure that only one operation is in-flight at a given moment. If a duplicate call comes in, that caller will wait until the original call completes and return the same value. Only owner call returns error if exists. The third return value indicates whether the call is the owner.

Trait Implementations§

Source§

impl<T, E> Debug for Group<T, E>
where T: Clone,

Source§

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

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

impl<T, E> Default for Group<T, E>
where T: Clone,

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<T, E> !Freeze for Group<T, E>

§

impl<T, E> !RefUnwindSafe for Group<T, E>

§

impl<T, E> Send for Group<T, E>
where T: Send + Sync,

§

impl<T, E> Sync for Group<T, E>
where T: Send + Sync,

§

impl<T, E> Unpin for Group<T, E>

§

impl<T, E> !UnwindSafe for Group<T, E>

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.