AsyncSendTry

Struct AsyncSendTry 

Source
pub struct AsyncSendTry<'a, G: AsyncSendTryGetFut<'a>> { /* private fields */ }
Expand description

Try to encapsulate an async-constructed borrowed-future along with it’s owner.

This struct only works with Send futures. If you’re working with !Send-futures, try using AsyncTry.

This struct can be constructed by passing to Self::new the owner by value and a functor-like AsyncSendTryGetFut, which when invoked will return a borrowed-future.’

In contrast to the method helpers in this crate, this structure is a future which must be polled in order to acquire the owned-future. Polling this future will first poll the functor until it results in either an error, in which case this future will yield that same error along with the owner, or a borrowed-future, in which ase this future will yield a future which has taken ownership of the owner, and will .await the borrowed future when polled. Auxiliary data returned by the functor is also yielded in this case.

Callers may wish to use crate::async_send_try_get to quickly construct the functor for cases which don’t require capturing, but any type which implements AsyncTryGetFut will work.

Implementations§

Source§

impl<'a, G: AsyncSendTryGetFut<'a>> AsyncSendTry<'a, G>

Source

pub fn new(val: G::Input, getter: G) -> Self

Trait Implementations§

Source§

impl<'a, G: AsyncSendTryGetFut<'a>> Future for AsyncSendTry<'a, G>

Source§

type Output = Result<(Pin<Box<dyn Future<Output = <G as AsyncSendTryGetFut<'a>>::Output> + Send + 'a>>, <G as AsyncSendTryGetFut<'a>>::Aux), (<G as AsyncSendTryGetFut<'a>>::Input, <G as AsyncSendTryGetFut<'a>>::Error)>

The type of value produced on completion.
Source§

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

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
Source§

impl<'__pin, 'a, G: AsyncSendTryGetFut<'a>> Unpin for AsyncSendTry<'a, G>
where PinnedFieldsOf<__Origin<'__pin, 'a, G>>: Unpin,

Auto Trait Implementations§

§

impl<'a, G> Freeze for AsyncSendTry<'a, G>
where <G as AsyncSendTryGetFut<'a>>::Input: Freeze, G: Freeze, <G as AsyncSendTryGetFut<'a>>::Aux: Freeze, <G as AsyncSendTryGetFut<'a>>::Error: Freeze,

§

impl<'a, G> !RefUnwindSafe for AsyncSendTry<'a, G>

§

impl<'a, G> Send for AsyncSendTry<'a, G>

§

impl<'a, G> !Sync for AsyncSendTry<'a, G>

§

impl<'a, G> !UnwindSafe for AsyncSendTry<'a, G>

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.