Struct futures_util::stream::Peekable [−][src]
#[must_use = "streams do nothing unless polled"]pub struct Peekable<St: Stream> { /* fields omitted */ }
Expand description
A Stream that implements a peek method.
The peek method can be used to retrieve a reference
to the next Stream::Item if available. A subsequent
call to poll will return the owned item.
Implementations
impl<St: Stream> Peekable<St>[src]
impl<St: Stream> Peekable<St>[src]pub fn get_ref(&self) -> &St[src]
pub fn get_ref(&self) -> &St[src]Acquires a reference to the underlying sink or stream that this combinator is pulling from.
pub fn get_mut(&mut self) -> &mut St[src]
pub fn get_mut(&mut self) -> &mut St[src]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.
pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut St>ⓘ[src]
pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut St>ⓘ[src]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.
pub fn into_inner(self) -> St[src]
pub fn into_inner(self) -> St[src]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.
pub fn peek(self: Pin<&mut Self>) -> Peek<'_, St>ⓘ[src]
pub fn peek(self: Pin<&mut Self>) -> Peek<'_, St>ⓘ[src]Produces a Peek future which retrieves a reference to the next item
in the stream, or None if the underlying stream terminates.
pub fn poll_peek(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Option<&St::Item>>[src]
pub fn poll_peek(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Option<&St::Item>>[src]Peek retrieves a reference to the next item in the stream.
This method polls the underlying stream and return either a reference to the next item if the stream is ready or passes through any errors.
pub fn next_if<F>(self: Pin<&mut Self>, func: F) -> NextIf<'_, St, F>ⓘ where
F: FnOnce(&St::Item) -> bool, [src]
pub fn next_if<F>(self: Pin<&mut Self>, func: F) -> NextIf<'_, St, F>ⓘ where
F: FnOnce(&St::Item) -> bool, [src]Creates a future which will consume and return the next value of this stream if a condition is true.
If func returns true for the next value of this stream, consume and
return it. Otherwise, return None.
Examples
Consume a number if it’s equal to 0.
use futures::stream::{self, StreamExt}; use futures::pin_mut; let stream = stream::iter(0..5).peekable(); pin_mut!(stream); // The first item of the stream is 0; consume it. assert_eq!(stream.as_mut().next_if(|&x| x == 0).await, Some(0)); // The next item returned is now 1, so `consume` will return `false`. assert_eq!(stream.as_mut().next_if(|&x| x == 0).await, None); // `next_if` saves the value of the next item if it was not equal to `expected`. assert_eq!(stream.next().await, Some(1));
Consume any number less than 10.
use futures::stream::{self, StreamExt}; use futures::pin_mut; let stream = stream::iter(1..20).peekable(); pin_mut!(stream); // Consume all numbers less than 10 while stream.as_mut().next_if(|&x| x < 10).await.is_some() {} // The next value returned will be 10 assert_eq!(stream.next().await, Some(10));
pub fn next_if_eq<'a, T>(
self: Pin<&'a mut Self>,
expected: &'a T
) -> NextIfEq<'a, St, T>ⓘ where
T: ?Sized,
St::Item: PartialEq<T>, [src]
pub fn next_if_eq<'a, T>(
self: Pin<&'a mut Self>,
expected: &'a T
) -> NextIfEq<'a, St, T>ⓘ where
T: ?Sized,
St::Item: PartialEq<T>, [src]Creates a future which will consume and return the next item if it is
equal to expected.
Example
Consume a number if it’s equal to 0.
use futures::stream::{self, StreamExt}; use futures::pin_mut; let stream = stream::iter(0..5).peekable(); pin_mut!(stream); // The first item of the stream is 0; consume it. assert_eq!(stream.as_mut().next_if_eq(&0).await, Some(0)); // The next item returned is now 1, so `consume` will return `false`. assert_eq!(stream.as_mut().next_if_eq(&0).await, None); // `next_if_eq` saves the value of the next item if it was not equal to `expected`. assert_eq!(stream.next().await, Some(1));
Trait Implementations
impl<St: Stream> FusedStream for Peekable<St>[src]
impl<St: Stream> FusedStream for Peekable<St>[src]fn is_terminated(&self) -> bool[src]
fn is_terminated(&self) -> bool[src]Returns true if the stream should no longer be polled.
impl<S, Item> Sink<Item> for Peekable<S> where
S: Sink<Item> + Stream, [src]
impl<S, Item> Sink<Item> for Peekable<S> where
S: Sink<Item> + Stream, [src]fn poll_ready(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>[src]
fn poll_ready(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>[src]Attempts to prepare the Sink to receive a value. Read more
fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error>[src]
fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error>[src]Begin the process of sending a value to the sink.
Each call to this function must be preceded by a successful call to
poll_ready which returned Poll::Ready(Ok(())). Read more
impl<S: Stream> Stream for Peekable<S>[src]
impl<S: Stream> Stream for Peekable<S>[src]impl<'__pin, St: Stream> Unpin for Peekable<St> where
__Origin<'__pin, St>: Unpin, [src]
__Origin<'__pin, St>: Unpin,
Auto Trait Implementations
impl<St> RefUnwindSafe for Peekable<St> where
St: RefUnwindSafe,
<St as Stream>::Item: RefUnwindSafe,
St: RefUnwindSafe,
<St as Stream>::Item: RefUnwindSafe,
impl<St> Send for Peekable<St> where
St: Send,
<St as Stream>::Item: Send,
St: Send,
<St as Stream>::Item: Send,
impl<St> Sync for Peekable<St> where
St: Sync,
<St as Stream>::Item: Sync,
St: Sync,
<St as Stream>::Item: Sync,
impl<St> UnwindSafe for Peekable<St> where
St: UnwindSafe,
<St as Stream>::Item: UnwindSafe,
St: UnwindSafe,
<St as Stream>::Item: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T, Item> SinkExt<Item> for T where
T: Sink<Item> + ?Sized, [src]
impl<T, Item> SinkExt<Item> for T where
T: Sink<Item> + ?Sized, [src]fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F> where
F: FnMut(U) -> Fut,
Fut: Future<Output = Result<Item, E>>,
E: From<Self::Error>,
Self: Sized, [src]
fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F> where
F: FnMut(U) -> Fut,
Fut: Future<Output = Result<Item, E>>,
E: From<Self::Error>,
Self: Sized, [src]sink only.Composes a function in front of the sink. Read more
fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F> where
F: FnMut(U) -> St,
St: Stream<Item = Result<Item, Self::Error>>,
Self: Sized, [src]
fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F> where
F: FnMut(U) -> St,
St: Stream<Item = Result<Item, Self::Error>>,
Self: Sized, [src]sink only.Composes a function in front of the sink. Read more
fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
Self: Sized, [src]
fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
Self: Sized, [src]sink only.Transforms the error returned by the sink.
fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E> where
Self: Sized,
Self::Error: Into<E>, [src]
fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E> where
Self: Sized,
Self::Error: Into<E>, [src]sink only.Map this sink’s error to a different error type using the Into trait. Read more
fn buffer(self, capacity: usize) -> Buffer<Self, Item> where
Self: Sized, [src]
fn buffer(self, capacity: usize) -> Buffer<Self, Item> where
Self: Sized, [src]sink only.Adds a fixed-size buffer to the current sink. Read more
fn close(&mut self) -> Close<'_, Self, Item>ⓘ where
Self: Unpin, [src]
fn close(&mut self) -> Close<'_, Self, Item>ⓘ where
Self: Unpin, [src]sink only.Close the sink.
fn fanout<Si>(self, other: Si) -> Fanout<Self, Si> where
Self: Sized,
Item: Clone,
Si: Sink<Item, Error = Self::Error>, [src]
fn fanout<Si>(self, other: Si) -> Fanout<Self, Si> where
Self: Sized,
Item: Clone,
Si: Sink<Item, Error = Self::Error>, [src]sink only.Fanout items to multiple sinks. Read more
fn flush(&mut self) -> Flush<'_, Self, Item>ⓘ where
Self: Unpin, [src]
fn flush(&mut self) -> Flush<'_, Self, Item>ⓘ where
Self: Unpin, [src]sink only.Flush the sink, processing all pending items. Read more
fn send(&mut self, item: Item) -> Send<'_, Self, Item>ⓘ where
Self: Unpin, [src]
fn send(&mut self, item: Item) -> Send<'_, Self, Item>ⓘ where
Self: Unpin, [src]sink only.A future that completes after the given item has been fully processed into the sink, including flushing. Read more
fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>ⓘ where
Self: Unpin, [src]
fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>ⓘ where
Self: Unpin, [src]sink only.A future that completes after the given item has been received by the sink. Read more
fn send_all<'a, St: ?Sized>(
&'a mut self,
stream: &'a mut St
) -> SendAll<'a, Self, St>ⓘ where
St: TryStream<Ok = Item, Error = Self::Error> + Stream + Unpin,
Self: Unpin, [src]
fn send_all<'a, St: ?Sized>(
&'a mut self,
stream: &'a mut St
) -> SendAll<'a, Self, St>ⓘ where
St: TryStream<Ok = Item, Error = Self::Error> + Stream + Unpin,
Self: Unpin, [src]sink only.A future that completes after the given stream has been fully processed into the sink, including flushing. Read more
fn left_sink<Si2>(self) -> Either<Self, Si2>ⓘ where
Si2: Sink<Item, Error = Self::Error>,
Self: Sized, [src]
fn left_sink<Si2>(self) -> Either<Self, Si2>ⓘ where
Si2: Sink<Item, Error = Self::Error>,
Self: Sized, [src]sink only.Wrap this sink in an Either sink, making it the left-hand variant
of that Either. Read more
fn right_sink<Si1>(self) -> Either<Si1, Self>ⓘ where
Si1: Sink<Item, Error = Self::Error>,
Self: Sized, [src]
fn right_sink<Si1>(self) -> Either<Si1, Self>ⓘ where
Si1: Sink<Item, Error = Self::Error>,
Self: Sized, [src]sink only.Wrap this stream in an Either stream, making it the right-hand variant
of that Either. Read more
fn compat(self) -> CompatSink<Self, Item> where
Self: Sized + Unpin, [src]
fn compat(self) -> CompatSink<Self, Item> where
Self: Sized + Unpin, [src]sink and compat only.fn poll_ready_unpin(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>> where
Self: Unpin, [src]
fn poll_ready_unpin(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>> where
Self: Unpin, [src]sink only.A convenience method for calling Sink::poll_ready on Unpin
sink types. Read more
fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error> where
Self: Unpin, [src]
fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error> where
Self: Unpin, [src]sink only.A convenience method for calling Sink::start_send on Unpin
sink types. Read more