AsyncTry

Struct AsyncTry 

Source
pub struct AsyncTry<'a, G: AsyncTryGetFut<'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 AsyncSendTry.

This struct can be constructed by passing to Self::new the owner by value and a functor-like AsyncTryGetFut, 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_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: AsyncTryGetFut<'a>> AsyncTry<'a, G>

Source

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

Construct the AsyncTry from an owner and a borrowed-future functor

Trait Implementations§

Source§

impl<'a, G: AsyncTryGetFut<'a>> Future for AsyncTry<'a, G>

Source§

type Output = Result<(Pin<Box<dyn Future<Output = <G as AsyncTryGetFut<'a>>::Output> + 'a>>, <G as AsyncTryGetFut<'a>>::Aux), (<G as AsyncTryGetFut<'a>>::Input, <G as AsyncTryGetFut<'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: AsyncTryGetFut<'a>> Unpin for AsyncTry<'a, G>
where PinnedFieldsOf<__Origin<'__pin, 'a, G>>: Unpin,

Auto Trait Implementations§

§

impl<'a, G> Freeze for AsyncTry<'a, G>
where <G as AsyncTryGetFut<'a>>::Input: Freeze, G: Freeze, <G as AsyncTryGetFut<'a>>::Aux: Freeze, <G as AsyncTryGetFut<'a>>::Error: Freeze,

§

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

§

impl<'a, G> !Send for AsyncTry<'a, G>

§

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

§

impl<'a, G> !UnwindSafe for AsyncTry<'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.