[−][src]Struct futures_util::future::Fuse
Future for the fuse
method.
Methods
impl<Fut: Future> Fuse<Fut>
[src]
ⓘImportant traits for Fuse<Fut>pub fn terminated() -> Fuse<Fut>
[src]
ⓘImportant traits for Fuse<Fut>
Creates a new Fuse
-wrapped future which is already terminated.
This can be useful in combination with looping and the select!
macro, which bypasses terminated futures.
Examples
use futures::channel::mpsc; use futures::future::{Fuse, FusedFuture, FutureExt}; use futures::select; use futures::stream::StreamExt; use futures::pin_mut; let (sender, mut stream) = mpsc::unbounded(); // Send a few messages into the stream sender.unbounded_send(()).unwrap(); sender.unbounded_send(()).unwrap(); drop(sender); // Use `Fuse::termianted()` to create an already-terminated future // which may be instantiated later. let foo_printer = Fuse::terminated(); pin_mut!(foo_printer); loop { select! { _ = foo_printer => {}, () = stream.select_next_some() => { if !foo_printer.is_terminated() { println!("Foo is already being printed!"); } else { foo_printer.set(async { // do some other async operations println!("Printing foo from `foo_printer` future"); }.fuse()); } }, complete => break, // `foo_printer` is terminated and the stream is done } }
Trait Implementations
impl<Fut: Debug + Future> Debug for Fuse<Fut>
[src]
impl<Fut: Future> Future for Fuse<Fut>
[src]
type Output = Fut::Output
The type of value produced on completion.
fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Fut::Output>
[src]
impl<Fut: Future> FusedFuture for Fuse<Fut>
[src]
fn is_terminated(&self) -> bool
[src]
Auto Trait Implementations
impl<Fut> Send for Fuse<Fut> where
Fut: Send,
Fut: Send,
impl<Fut> Unpin for Fuse<Fut> where
Fut: Unpin,
Fut: Unpin,
impl<Fut> Sync for Fuse<Fut> where
Fut: Sync,
Fut: Sync,
impl<Fut> UnwindSafe for Fuse<Fut> where
Fut: UnwindSafe,
Fut: UnwindSafe,
impl<Fut> RefUnwindSafe for Fuse<Fut> where
Fut: RefUnwindSafe,
Fut: RefUnwindSafe,
Blanket Implementations
impl<T> FutureExt for T where
T: Future + ?Sized,
[src]
T: Future + ?Sized,
ⓘImportant traits for Map<Fut, F>fn map<U, F>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Output) -> U,
Self: Sized,
[src]
ⓘImportant traits for Map<Fut, F>
F: FnOnce(Self::Output) -> U,
Self: Sized,
ⓘImportant traits for Then<Fut1, Fut2, F>fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F> where
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
Self: Sized,
[src]
ⓘImportant traits for Then<Fut1, Fut2, F>
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
Self: Sized,
ⓘImportant traits for Either<A, B>fn left_future<B>(self) -> Either<Self, B> where
B: Future<Output = Self::Output>,
Self: Sized,
[src]
ⓘImportant traits for Either<A, B>
B: Future<Output = Self::Output>,
Self: Sized,
ⓘImportant traits for Either<A, B>fn right_future<A>(self) -> Either<A, Self> where
A: Future<Output = Self::Output>,
Self: Sized,
[src]
ⓘImportant traits for Either<A, B>
A: Future<Output = Self::Output>,
Self: Sized,
fn into_stream(self) -> IntoStream<Self> where
Self: Sized,
[src]
Self: Sized,
ⓘImportant traits for Flatten<Fut>fn flatten(self) -> Flatten<Self> where
Self::Output: Future,
Self: Sized,
[src]
ⓘImportant traits for Flatten<Fut>
Self::Output: Future,
Self: Sized,
fn flatten_stream(self) -> FlattenStream<Self> where
Self::Output: Stream,
Self: Sized,
[src]
Self::Output: Stream,
Self: Sized,
ⓘImportant traits for Fuse<Fut>fn fuse(self) -> Fuse<Self> where
Self: Sized,
[src]
ⓘImportant traits for Fuse<Fut>
Self: Sized,
ⓘImportant traits for Inspect<Fut, F>fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnOnce(&Self::Output),
Self: Sized,
[src]
ⓘImportant traits for Inspect<Fut, F>
F: FnOnce(&Self::Output),
Self: Sized,
ⓘImportant traits for CatchUnwind<Fut>fn catch_unwind(self) -> CatchUnwind<Self> where
Self: Sized + UnwindSafe,
[src]
ⓘImportant traits for CatchUnwind<Fut>
Self: Sized + UnwindSafe,
ⓘImportant traits for Shared<Fut>fn shared(self) -> Shared<Self> where
Self: Sized,
Self::Output: Clone,
[src]
ⓘImportant traits for Shared<Fut>
Self: Sized,
Self::Output: Clone,
fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>) where
Self: Sized,
[src]
Self: Sized,
fn boxed<'a>(self) -> BoxFuture<'a, Self::Output> where
Self: Sized + Send + 'a,
[src]
Self: Sized + Send + 'a,
fn boxed_local<'a>(self) -> LocalBoxFuture<'a, Self::Output> where
Self: Sized + 'a,
[src]
Self: Sized + 'a,
ⓘImportant traits for UnitError<Fut>fn unit_error(self) -> UnitError<Self> where
Self: Sized,
[src]
ⓘImportant traits for UnitError<Fut>
Self: Sized,
ⓘImportant traits for NeverError<Fut>fn never_error(self) -> NeverError<Self> where
Self: Sized,
[src]
ⓘImportant traits for NeverError<Fut>
Self: Sized,
fn poll_unpin(&mut self, cx: &mut Context) -> Poll<Self::Output> where
Self: Unpin,
[src]
Self: Unpin,
fn now_or_never(self) -> Option<Self::Output> where
Self: Sized,
[src]
Self: Sized,
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture + ?Sized,
[src]
Fut: TryFuture + ?Sized,
fn flatten_sink<Item>(self) -> FlattenSink<Self, Self::Ok> where
Self::Ok: Sink<Item, Error = Self::Error>,
Self: Sized,
[src]
Self::Ok: Sink<Item, Error = Self::Error>,
Self: Sized,
ⓘImportant traits for MapOk<Fut, F>fn map_ok<T, F>(self, f: F) -> MapOk<Self, F> where
F: FnOnce(Self::Ok) -> T,
Self: Sized,
[src]
ⓘImportant traits for MapOk<Fut, F>
F: FnOnce(Self::Ok) -> T,
Self: Sized,
ⓘImportant traits for MapErr<Fut, F>fn map_err<E, F>(self, f: F) -> MapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
Self: Sized,
[src]
ⓘImportant traits for MapErr<Fut, F>
F: FnOnce(Self::Error) -> E,
Self: Sized,
ⓘImportant traits for ErrInto<Fut, E>fn err_into<E>(self) -> ErrInto<Self, E> where
Self: Sized,
Self::Error: Into<E>,
[src]
ⓘImportant traits for ErrInto<Fut, E>
Self: Sized,
Self::Error: Into<E>,
ⓘImportant traits for AndThen<Fut1, Fut2, F>fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F> where
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
Self: Sized,
[src]
ⓘImportant traits for AndThen<Fut1, Fut2, F>
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
Self: Sized,
ⓘImportant traits for OrElse<Fut1, Fut2, F>fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F> where
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
Self: Sized,
[src]
ⓘImportant traits for OrElse<Fut1, Fut2, F>
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
Self: Sized,
ⓘImportant traits for InspectOk<Fut, F>fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F> where
F: FnOnce(&Self::Ok),
Self: Sized,
[src]
ⓘImportant traits for InspectOk<Fut, F>
F: FnOnce(&Self::Ok),
Self: Sized,
ⓘImportant traits for InspectErr<Fut, F>fn inspect_err<F>(self, f: F) -> InspectErr<Self, F> where
F: FnOnce(&Self::Error),
Self: Sized,
[src]
ⓘImportant traits for InspectErr<Fut, F>
F: FnOnce(&Self::Error),
Self: Sized,
fn try_flatten_stream(self) -> TryFlattenStream<Self> where
Self::Ok: TryStream<Error = Self::Error>,
Self: Sized,
[src]
Self::Ok: TryStream<Error = Self::Error>,
Self: Sized,
ⓘImportant traits for UnwrapOrElse<Fut, F>fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F> where
Self: Sized,
F: FnOnce(Self::Error) -> Self::Ok,
[src]
ⓘImportant traits for UnwrapOrElse<Fut, F>
Self: Sized,
F: FnOnce(Self::Error) -> Self::Ok,
ⓘImportant traits for Compat<R>fn compat(self) -> Compat<Self> where
Self: Sized + Unpin,
[src]
ⓘImportant traits for Compat<R>
Self: Sized + Unpin,
ⓘImportant traits for IntoFuture<Fut>fn into_future(self) -> IntoFuture<Self> where
Self: Sized,
[src]
ⓘImportant traits for IntoFuture<Fut>
Self: Sized,
fn try_poll_unpin(
&mut self,
cx: &mut Context
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,
[src]
&mut self,
cx: &mut Context
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
ⓘImportant traits for &'_ mut Ffn borrow_mut(&mut self) -> &mut T
[src]
ⓘImportant traits for &'_ mut F
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<F, T, E> TryFuture for F where
F: Future<Output = Result<T, E>> + ?Sized,
[src]
F: Future<Output = Result<T, E>> + ?Sized,