Struct hybridfutex::WaitFuture

source ·
pub struct WaitFuture<'a> { /* private fields */ }
Expand description

A future representing a thread that is waiting for a notification from another thread using a HybridFutex synchronization primitive.

Trait Implementations§

source§

impl<'a> Debug for WaitFuture<'a>

source§

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

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

impl<'a> Drop for WaitFuture<'a>

source§

fn drop(&mut self)

Drops the future, checking whether it has been polled before and panicking if it has not. This is to prevent potential memory leaks if the future is dropped before being polled.

source§

impl<'a> Future for WaitFuture<'a>

source§

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()>

Polls the future, returning Poll::Pending if the future is still waiting for a notification, and Poll::Ready(()) if the future has been notified.

If the future has not yet been polled, this method increments the counter of the HybridFutex that the future is waiting on to indicate that the current thread is waiting. If the counter is already negative, the future immediately resolves and returns Poll::Ready(()). Otherwise, the method pushes a new AsyncWaiter onto the queue of waiters for the HybridFutex, and returns Poll::Pending.

If the future has already been polled and the value of the state field is 1, this method simply returns Poll::Pending without modifying the state or the queue of waiters.

If the future has already been notified and the value of the state field is !0, this method returns Poll::Ready(()) without modifying the state or the queue of waiters.

§

type Output = ()

The type of value produced on completion.

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for WaitFuture<'a>

§

impl<'a> Send for WaitFuture<'a>

§

impl<'a> Sync for WaitFuture<'a>

§

impl<'a> Unpin for WaitFuture<'a>

§

impl<'a> UnwindSafe for WaitFuture<'a>

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,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · 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<F> IntoFuture for Fwhere F: Future,

§

type Output = <F as Future>::Output

The output that the future will produce on completion.
§

type IntoFuture = F

Which kind of future are we turning this into?
source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · 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.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.