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

Source§

type Output = ()

The type of value produced on completion.

Auto Trait Implementations§

§

impl<'a> !Freeze for WaitFuture<'a>

§

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 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<F> IntoFuture for F
where F: Future,

Source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
Source§

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