Struct futures_util::future::Fuse [−][src]
pub struct Fuse<Fut> { /* fields omitted */ }
Expand description
Future for the fuse
method.
Implementations
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::terminated()` 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
Returns true
if the underlying future should no longer be polled.
Auto Trait Implementations
impl<Fut> RefUnwindSafe for Fuse<Fut> where
Fut: RefUnwindSafe,
impl<Fut> UnwindSafe for Fuse<Fut> where
Fut: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (
into_future
)The output that the future will produce on completion.
type Future = F
type Future = F
🔬 This is a nightly-only experimental API. (
into_future
)Which kind of future are we turning this into?
🔬 This is a nightly-only experimental API. (
into_future
)Creates a future from a value.