Struct tokio_stream::StreamNotifyClose
source · pub struct StreamNotifyClose<S> { /* private fields */ }
Expand description
A Stream
that wraps the values in an Option
.
Whenever the wrapped stream yields an item, this stream yields that item
wrapped in Some
. When the inner stream ends, then this stream first
yields a None
item, and then this stream will also end.
Example
Using StreamNotifyClose
to handle closed streams with StreamMap
.
use tokio_stream::{StreamExt, StreamMap, StreamNotifyClose};
#[tokio::main]
async fn main() {
let mut map = StreamMap::new();
let stream = StreamNotifyClose::new(tokio_stream::iter(vec![0, 1]));
let stream2 = StreamNotifyClose::new(tokio_stream::iter(vec![0, 1]));
map.insert(0, stream);
map.insert(1, stream2);
while let Some((key, val)) = map.next().await {
match val {
Some(val) => println!("got {val:?} from stream {key:?}"),
None => println!("stream {key:?} closed"),
}
}
}
Implementations§
source§impl<S> StreamNotifyClose<S>
impl<S> StreamNotifyClose<S>
sourcepub fn into_inner(self) -> Option<S>
pub fn into_inner(self) -> Option<S>
Get back the inner Stream
.
Returns None
if the stream has reached its end.
Trait Implementations§
source§impl<S> Stream for StreamNotifyClose<S>where
S: Stream,
impl<S> Stream for StreamNotifyClose<S>where S: Stream,
impl<'__pin, S> Unpin for StreamNotifyClose<S>where __Origin<'__pin, S>: Unpin,
Auto Trait Implementations§
impl<S> RefUnwindSafe for StreamNotifyClose<S>where S: RefUnwindSafe,
impl<S> Send for StreamNotifyClose<S>where S: Send,
impl<S> Sync for StreamNotifyClose<S>where S: Sync,
impl<S> UnwindSafe for StreamNotifyClose<S>where S: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<St> StreamExt for Stwhere
St: Stream + ?Sized,
impl<St> StreamExt for Stwhere St: Stream + ?Sized,
source§fn next(&mut self) -> Next<'_, Self>where
Self: Unpin,
fn next(&mut self) -> Next<'_, Self>where Self: Unpin,
Consumes and returns the next value in the stream or
None
if the
stream is finished. Read moresource§fn try_next<T, E>(&mut self) -> TryNext<'_, Self>where
Self: Stream<Item = Result<T, E>> + Unpin,
fn try_next<T, E>(&mut self) -> TryNext<'_, Self>where Self: Stream<Item = Result<T, E>> + Unpin,
Consumes and returns the next item in the stream. If an error is
encountered before the next item, the error is returned instead. Read more
source§fn map<T, F>(self, f: F) -> Map<Self, F>where
F: FnMut(Self::Item) -> T,
Self: Sized,
fn map<T, F>(self, f: F) -> Map<Self, F>where F: FnMut(Self::Item) -> T, Self: Sized,
Maps this stream’s items to a different type, returning a new stream of
the resulting type. Read more
source§fn map_while<T, F>(self, f: F) -> MapWhile<Self, F>where
F: FnMut(Self::Item) -> Option<T>,
Self: Sized,
fn map_while<T, F>(self, f: F) -> MapWhile<Self, F>where F: FnMut(Self::Item) -> Option<T>, Self: Sized,
Map this stream’s items to a different type for as long as determined by
the provided closure. A stream of the target type will be returned,
which will yield elements until the closure returns
None
. Read moresource§fn then<F, Fut>(self, f: F) -> Then<Self, Fut, F>where
F: FnMut(Self::Item) -> Fut,
Fut: Future,
Self: Sized,
fn then<F, Fut>(self, f: F) -> Then<Self, Fut, F>where F: FnMut(Self::Item) -> Fut, Fut: Future, Self: Sized,
Maps this stream’s items asynchronously to a different type, returning a
new stream of the resulting type. Read more
source§fn merge<U>(self, other: U) -> Merge<Self, U>where
U: Stream<Item = Self::Item>,
Self: Sized,
fn merge<U>(self, other: U) -> Merge<Self, U>where U: Stream<Item = Self::Item>, Self: Sized,
Combine two streams into one by interleaving the output of both as it
is produced. Read more
source§fn filter<F>(self, f: F) -> Filter<Self, F>where
F: FnMut(&Self::Item) -> bool,
Self: Sized,
fn filter<F>(self, f: F) -> Filter<Self, F>where F: FnMut(&Self::Item) -> bool, Self: Sized,
Filters the values produced by this stream according to the provided
predicate. Read more
source§fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F>where
F: FnMut(Self::Item) -> Option<T>,
Self: Sized,
fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F>where F: FnMut(Self::Item) -> Option<T>, Self: Sized,
Filters the values produced by this stream while simultaneously mapping
them to a different type according to the provided closure. Read more
source§fn fuse(self) -> Fuse<Self>where
Self: Sized,
fn fuse(self) -> Fuse<Self>where Self: Sized,
Creates a stream which ends after the first
None
. Read moresource§fn take(self, n: usize) -> Take<Self>where
Self: Sized,
fn take(self, n: usize) -> Take<Self>where Self: Sized,
Creates a new stream of at most
n
items of the underlying stream. Read moresource§fn take_while<F>(self, f: F) -> TakeWhile<Self, F>where
F: FnMut(&Self::Item) -> bool,
Self: Sized,
fn take_while<F>(self, f: F) -> TakeWhile<Self, F>where F: FnMut(&Self::Item) -> bool, Self: Sized,
Take elements from this stream while the provided predicate
resolves to
true
. Read moresource§fn skip(self, n: usize) -> Skip<Self>where
Self: Sized,
fn skip(self, n: usize) -> Skip<Self>where Self: Sized,
Creates a new stream that will skip the
n
first items of the
underlying stream. Read moresource§fn skip_while<F>(self, f: F) -> SkipWhile<Self, F>where
F: FnMut(&Self::Item) -> bool,
Self: Sized,
fn skip_while<F>(self, f: F) -> SkipWhile<Self, F>where F: FnMut(&Self::Item) -> bool, Self: Sized,
Skip elements from the underlying stream while the provided predicate
resolves to
true
. Read moresource§fn all<F>(&mut self, f: F) -> AllFuture<'_, Self, F>where
Self: Unpin,
F: FnMut(Self::Item) -> bool,
fn all<F>(&mut self, f: F) -> AllFuture<'_, Self, F>where Self: Unpin, F: FnMut(Self::Item) -> bool,
Tests if every element of the stream matches a predicate. Read more
source§fn any<F>(&mut self, f: F) -> AnyFuture<'_, Self, F>where
Self: Unpin,
F: FnMut(Self::Item) -> bool,
fn any<F>(&mut self, f: F) -> AnyFuture<'_, Self, F>where Self: Unpin, F: FnMut(Self::Item) -> bool,
Tests if any element of the stream matches a predicate. Read more
source§fn chain<U>(self, other: U) -> Chain<Self, U>where
U: Stream<Item = Self::Item>,
Self: Sized,
fn chain<U>(self, other: U) -> Chain<Self, U>where U: Stream<Item = Self::Item>, Self: Sized,
Combine two streams into one by first returning all values from the
first stream then all values from the second stream. Read more