Struct Peekable
#[must_use = "streams do nothing unless polled"]
pub struct Peekable<St: Stream> { /* private fields */ }
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>
fn get_ref(&self) -> &StAcquires a reference to the underlying sink or stream that this combinator is pulling from.
fn get_mut(&mut self) -> &mut StAcquires 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.
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.
fn into_inner(self) -> StConsumes 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.
fn peek(self: Pin<&mut Self>) -> Peek<'_, St>Produces a future which retrieves a reference to the next item in the stream, or
Noneif the underlying stream terminates.fn poll_peek(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<&St::Item>>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.
fn peek_mut(self: Pin<&mut Self>) -> PeekMut<'_, St>Produces a future which retrieves a mutable reference to the next item in the stream, or
Noneif the underlying stream terminates.Examples
# block_on;fn poll_peek_mut(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<&mut St::Item>>Peek retrieves a mutable reference to the next item in the stream.
fn next_if<F>(self: Pin<&mut Self>, func: F) -> NextIf<'_, St, F> where F: FnOnce(&St::Item) -> bool,Creates a future which will consume and return the next value of this stream if a condition is true.
If
funcreturnstruefor the next value of this stream, consume and return it. Otherwise, returnNone.Examples
Consume a number if it's equal to 0.
# block_on;Consume any number less than 10.
# block_on;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>,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.
# block_on;
Trait Implementations
impl<'__pin, St: Stream> Unpin for Peekable<St>
where
PinnedFieldsOf<__Origin<'__pin, St>>: Unpin,
impl<S, Item> Sink<Item> for Peekable<S>
where
S: Sink<Item> + Stream,
type Error = <S as Sink<Item>>::Error;fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error>fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>
impl<S: Stream> Stream for Peekable<S>
type Item = <S as Stream>::Item;fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>>fn size_hint(&self) -> (usize, Option<usize>)
impl<St: Debug + Stream> Debug for Peekable<St>
where
St::Item: Debug,
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl<St: Stream> FusedStream for Peekable<St>
fn is_terminated(&self) -> bool
Auto Trait Implementations
impl<St> Freeze for Peekable<St>
where
Fuse<St>: Freeze,
Option<<St as Stream>::Item>: Freeze,
impl<St> RefUnwindSafe for Peekable<St>
where
Fuse<St>: RefUnwindSafe,
Option<<St as Stream>::Item>: RefUnwindSafe,
impl<St> Send for Peekable<St>
where
Fuse<St>: Send,
Option<<St as Stream>::Item>: Send,
impl<St> Sync for Peekable<St>
where
Fuse<St>: Sync,
Option<<St as Stream>::Item>: Sync,
impl<St> UnsafeUnpin for Peekable<St>
where
Fuse<St>: UnsafeUnpin,
Option<<St as Stream>::Item>: UnsafeUnpin,
impl<St> UnwindSafe for Peekable<St>
where
Fuse<St>: UnwindSafe,
Option<<St as Stream>::Item>: UnwindSafe,
Blanket Implementations
impl<S> TryStreamExt for Peekable<St>
where
S: TryStream + ?Sized,
impl<S, T, E> TryStream for Peekable<St>
where
S: Stream<Item = Result<T, E>> + ?Sized,
type Ok = T;type Error = E;fn try_poll_next(self: Pin<&mut S>, cx: &mut Context<'_>) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>
impl<T> Any for Peekable<St>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Peekable<St>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Peekable<St>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for Peekable<St>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> StreamExt for Peekable<St>
where
T: Stream + ?Sized,
impl<T, Item> SinkExt<Item> for Peekable<St>
where
T: Sink<Item> + ?Sized,
impl<T, U> Into<U> for Peekable<St>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Peekable<St>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Peekable<St>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>