tokio_util::sync

Struct ReusableBoxFuture

source
pub struct ReusableBoxFuture<'a, T> { /* private fields */ }
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.

Implementations§

source§

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

source

pub fn new<F>(future: F) -> Self
where 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.

source§

type Output = T

The type of value produced on completion.
source§

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

Auto Trait Implementations§

§

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

§

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 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<F, T, E> TryFuture for F
where F: Future<Output = Result<T, E>> + ?Sized,

source§

type Ok = T

The type of successful values yielded by this future
source§

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