futures_util::future

Struct Shared

Source
pub struct Shared<F: Future> { /* private fields */ }
Expand description

A future that is cloneable and can be polled in multiple threads. Use Future::shared() method to convert any future into a Shared future.

Implementations§

Source§

impl<F> Shared<F>
where F: Future,

Source

pub fn peek(&self) -> Option<Result<SharedItem<F::Item>, SharedError<F::Error>>>

If any clone of this Shared has completed execution, returns its result immediately without blocking. Otherwise, returns None without triggering the work represented by this Shared.

Trait Implementations§

Source§

impl<F> Clone for Shared<F>
where F: Future,

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<F> Debug for Shared<F>
where F: Future + Debug, F::Item: Debug, F::Error: Debug,

Source§

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

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

impl<F> Drop for Shared<F>
where F: Future,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<F> Future for Shared<F>
where F: Future,

Source§

type Item = SharedItem<<F as Future>::Item>

A successful value
Source§

type Error = SharedError<<F as Future>::Error>

An error
Source§

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

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

Auto Trait Implementations§

§

impl<F> Freeze for Shared<F>

§

impl<F> !RefUnwindSafe for Shared<F>

§

impl<F> Send for Shared<F>
where F: Send, <F as Future>::Item: Send + Sync, <F as Future>::Error: Send + Sync,

§

impl<F> Sync for Shared<F>
where F: Send, <F as Future>::Item: Send + Sync, <F as Future>::Error: Send + Sync,

§

impl<F> Unpin for Shared<F>

§

impl<F> !UnwindSafe for Shared<F>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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 map<U, F>(self, f: F) -> Map<Self, F>
where F: FnOnce(Self::Item) -> U, Self: Sized,

Map this future’s result to a different type, returning a new future of the resulting type. Read more
Source§

fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
where F: FnOnce(Self::Error) -> E, Self: Sized,

Map this future’s error to a different error, returning a new future. Read more
Source§

fn err_into<E>(self) -> ErrInto<Self, E>
where Self: Sized, Self::Error: Into<E>,

Map this future’s error to a new error type using the Into trait. Read more
Source§

fn then<B, F>(self, f: F) -> Then<Self, B, F>
where F: FnOnce(Result<Self::Item, Self::Error>) -> B, B: IntoFuture, Self: Sized,

Chain on a computation for when a future finished, passing the result of the future to the provided closure f. Read more
Source§

fn and_then<B, F>(self, f: F) -> AndThen<Self, B, F>
where F: FnOnce(Self::Item) -> B, B: IntoFuture<Error = Self::Error>, Self: Sized,

Execute another future after this one has resolved successfully. Read more
Source§

fn or_else<B, F>(self, f: F) -> OrElse<Self, B, F>
where F: FnOnce(Self::Error) -> B, B: IntoFuture<Item = Self::Item>, Self: Sized,

Execute another future if this one resolves with an error. Read more
Source§

fn select<B>(self, other: B) -> Select<Self, B::Future>
where B: IntoFuture, Self: Sized,

Waits for either one of two differently-typed futures to complete. Read more
Source§

fn join<B>(self, other: B) -> Join<Self, B::Future>
where B: IntoFuture<Error = Self::Error>, Self: Sized,

Joins the result of two futures, waiting for them both to complete. Read more
Source§

fn join3<B, C>(self, b: B, c: C) -> Join3<Self, B::Future, C::Future>
where B: IntoFuture<Error = Self::Error>, C: IntoFuture<Error = Self::Error>, Self: Sized,

Same as join, but with more futures.
Source§

fn join4<B, C, D>( self, b: B, c: C, d: D, ) -> Join4<Self, B::Future, C::Future, D::Future>
where B: IntoFuture<Error = Self::Error>, C: IntoFuture<Error = Self::Error>, D: IntoFuture<Error = Self::Error>, Self: Sized,

Same as join, but with more futures.
Source§

fn join5<B, C, D, E>( self, b: B, c: C, d: D, e: E, ) -> Join5<Self, B::Future, C::Future, D::Future, E::Future>
where B: IntoFuture<Error = Self::Error>, C: IntoFuture<Error = Self::Error>, D: IntoFuture<Error = Self::Error>, E: IntoFuture<Error = Self::Error>, Self: Sized,

Same as join, but with more futures.
Source§

fn left<B>(self) -> Either<Self, B>
where B: Future<Item = Self::Item, Error = Self::Error>, Self: Sized,

👎Deprecated: use left_future instead
Wrap this future in an Either future, making it the left-hand variant of that Either. Read more
Source§

fn left_future<B>(self) -> Either<Self, B>
where B: Future<Item = Self::Item, Error = Self::Error>, Self: Sized,

Wrap this future in an Either future, making it the left-hand variant of that Either. Read more
Source§

fn right<A>(self) -> Either<A, Self>
where A: Future<Item = Self::Item, Error = Self::Error>, Self: Sized,

👎Deprecated: use right_future instead
Wrap this future in an Either future, making it the right-hand variant of that Either. Read more
Source§

fn right_future<A>(self) -> Either<A, Self>
where A: Future<Item = Self::Item, Error = Self::Error>, Self: Sized,

Wrap this future in an Either future, making it the right-hand variant of that Either. Read more
Source§

fn into_stream(self) -> IntoStream<Self>
where Self: Sized,

Convert this future into a single element stream. Read more
Source§

fn flatten(self) -> Flatten<Self>
where Self::Item: IntoFuture<Error = <Self as Future>::Error>, Self: Sized,

Flatten the execution of this future when the successful result of this future is itself another future. Read more
Source§

fn flatten_sink(self) -> FlattenSink<Self>
where <Self as Future>::Item: Sink<SinkError = Self::Error>, Self: Sized,

Flatten the execution of this future when the successful result of this future is a sink. Read more
Source§

fn flatten_stream(self) -> FlattenStream<Self>
where <Self as Future>::Item: Stream<Error = Self::Error>, Self: Sized,

Flatten the execution of this future when the successful result of this future is a stream. Read more
Source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Fuse a future such that poll will never again be called once it has completed. Read more
Source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where F: FnOnce(&Self::Item), Self: Sized,

Do something with the item of a future, passing it on. Read more
Source§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
where F: FnOnce(&Self::Error), Self: Sized,

Do something with the error of a future, passing it on. Read more
Source§

fn catch_unwind(self) -> CatchUnwind<Self>
where Self: Sized + UnwindSafe,

Catches unwinding panics while polling the future. Read more
Source§

fn shared(self) -> Shared<Self>
where Self: Sized,

Create a cloneable handle to this future where all handles will resolve to the same result. Read more
Source§

fn recover<E, F>(self, f: F) -> Recover<Self, E, F>
where Self: Sized, F: FnOnce(Self::Error) -> Self::Item,

Handle errors generated by this future by converting them into Self::Item. Read more
Source§

fn with_executor<E>(self, executor: E) -> WithExecutor<Self, E>
where Self: Sized, E: Executor,

Assigns the provided Executor to be used when spawning tasks from within the future. 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<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<F> IntoFuture for F
where F: Future,

Source§

type Future = F

The future that this type can be converted into.
Source§

type Item = <F as Future>::Item

The item that the future may resolve with.
Source§

type Error = <F as Future>::Error

The error that the future may resolve with.
Source§

fn into_future(self) -> F

Consumes this object and produces a future.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.