Struct futures_util::stream::TakeUntil
source · pub struct TakeUntil<St: Stream, Fut: Future> { /* private fields */ }
Expand description
Stream for the take_until
method.
Implementations§
source§impl<St, Fut> TakeUntil<St, Fut>where
St: Stream,
Fut: Future,
impl<St, Fut> TakeUntil<St, Fut>where St: Stream, Fut: Future,
sourcepub fn get_ref(&self) -> &St
pub fn get_ref(&self) -> &St
Acquires a reference to the underlying sink or stream that this combinator is pulling from.
sourcepub fn get_mut(&mut self) -> &mut St
pub fn get_mut(&mut self) -> &mut St
Acquires a mutable reference to the underlying sink or stream that this combinator is pulling from.
Note that care must be taken to avoid tampering with the state of the sink or stream which may otherwise confuse this combinator.
sourcepub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut St>
pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut St>
Acquires a pinned mutable reference to the underlying sink or stream that this combinator is pulling from.
Note that care must be taken to avoid tampering with the state of the sink or stream which may otherwise confuse this combinator.
sourcepub fn into_inner(self) -> St
pub fn into_inner(self) -> St
Consumes this combinator, returning the underlying sink or stream.
Note that this may discard intermediate state of this combinator, so care should be taken to avoid losing resources when this is called.
sourcepub fn take_future(&mut self) -> Option<Fut>
pub fn take_future(&mut self) -> Option<Fut>
Extract the stopping future out of the combinator. The future is returned only if it isn’t resolved yet, ie. if the stream isn’t stopped yet. Taking out the future means the combinator will be yielding elements from the wrapped stream without ever stopping it.
sourcepub fn take_result(&mut self) -> Option<Fut::Output>
pub fn take_result(&mut self) -> Option<Fut::Output>
Once the stopping future is resolved, this method can be used to extract the value returned by the stopping future.
This may be used to retrieve arbitrary data from the stopping future, for example a reason why the stream was stopped.
This method will return None
if the future isn’t resolved yet,
or if the result was already taken out.
Examples
use futures::future;
use futures::stream::{self, StreamExt};
use futures::task::Poll;
let stream = stream::iter(1..=10);
let mut i = 0;
let stop_fut = future::poll_fn(|_cx| {
i += 1;
if i <= 5 {
Poll::Pending
} else {
Poll::Ready("reason")
}
});
let mut stream = stream.take_until(stop_fut);
let _ = stream.by_ref().collect::<Vec<_>>().await;
let result = stream.take_result().unwrap();
assert_eq!(result, "reason");
sourcepub fn is_stopped(&self) -> bool
pub fn is_stopped(&self) -> bool
Whether the stream was stopped yet by the stopping future being resolved.
Trait Implementations§
source§impl<St, Fut> Debug for TakeUntil<St, Fut>where
St: Stream + Debug,
St::Item: Debug,
Fut: Future + Debug,
impl<St, Fut> Debug for TakeUntil<St, Fut>where St: Stream + Debug, St::Item: Debug, Fut: Future + Debug,
source§impl<St, Fut> FusedStream for TakeUntil<St, Fut>where
St: Stream,
Fut: Future,
impl<St, Fut> FusedStream for TakeUntil<St, Fut>where St: Stream, Fut: Future,
source§fn is_terminated(&self) -> bool
fn is_terminated(&self) -> bool
true
if the stream should no longer be polled.