pub struct ReusableBoxFuture<'a, T> {
    boxed: Pin<Box<dyn Future<Output = T> + Send + 'a>>,
}
Expand description

A reusable Pin<Box<dyn Future<Output = T> + Send + 'a>>.

This type lets you replace the future stored in the box without reallocating when the size and alignment permits this.

Fields§

§boxed: Pin<Box<dyn Future<Output = T> + Send + 'a>>

Implementations§

source§

impl<'a, T> ReusableBoxFuture<'a, T>

source

pub fn new<F>(future: F) -> Selfwhere F: Future<Output = T> + Send + 'a,

Create a new ReusableBoxFuture<T> containing the provided future.

source

pub fn set<F>(&mut self, future: F)where F: Future<Output = T> + Send + 'a,

Replace the future currently stored in this box.

This reallocates if and only if the layout of the provided future is different from the layout of the currently stored future.

source

pub fn try_set<F>(&mut self, future: F) -> Result<(), F>where F: Future<Output = T> + Send + 'a,

Replace the future currently stored in this box.

This function never reallocates, but returns an error if the provided future has a different size or alignment from the currently stored future.

source

pub fn get_pin(&mut self) -> Pin<&mut (dyn Future<Output = T> + Send)>

Get a pinned reference to the underlying future.

source

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

Poll the future stored inside this box.

Trait Implementations§

source§

impl<T> Debug for ReusableBoxFuture<'_, T>

source§

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

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

impl<T> Future for ReusableBoxFuture<'_, T>

source§

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

Poll the future stored inside this box.

§

type Output = T

The type of value produced on completion.
source§

impl<T> Sync for ReusableBoxFuture<'_, T>

Auto Trait Implementations§

§

impl<'a, T> !RefUnwindSafe for ReusableBoxFuture<'a, T>

§

impl<'a, T> Send for ReusableBoxFuture<'a, T>

§

impl<'a, T> Unpin for ReusableBoxFuture<'a, T>

§

impl<'a, T> !UnwindSafe for ReusableBoxFuture<'a, T>

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,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere 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 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.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<F, T, E> TryFuture for Fwhere F: Future<Output = Result<T, E>> + ?Sized,

§

type Ok = T

The type of successful values yielded by this future
§

type Error = E

The type of failures yielded by this future
source§

fn try_poll( self: Pin<&mut F>, cx: &mut Context<'_> ) -> Poll<<F as Future>::Output>

Poll this TryFuture as if it were a Future. Read more
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.
source§

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

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more