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> FutureExt for T
where T: Future + ?Sized,

Source§

fn timeout(self, timeout: Duration) -> Timeout<Self>
where Self: Sized,

Available on crate feature time only.
A wrapper around tokio::time::timeout, with the advantage that it is easier to write fluent call chains. Read more
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 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.
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

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 16 bytes