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]

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]

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>

Notable traits for Pin<P>

impl<P> Future for Pin<P> where
    P: Unpin + DerefMut,
    <P as Deref>::Target: Future
type Output = <<P as Deref>::Target as Future>::Output;
[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]

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>

Notable traits for Peek<'a, St>

impl<'a, St> Future for Peek<'a, St> where
    St: Stream
type Output = Option<&'a St::Item>;
[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]

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>

Notable traits for NextIf<'_, St, F>

impl<St, F> Future for NextIf<'_, St, F> where
    St: Stream,
    F: for<'a> FnOnce1<&'a St::Item, Output = bool>, 
type Output = Option<St::Item>;
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>

Notable traits for NextIfEq<'_, St, T>

impl<St, T> Future for NextIfEq<'_, St, T> where
    St: Stream,
    T: ?Sized,
    St::Item: PartialEq<T>, 
type Output = Option<St::Item>;
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: Debug + Stream> Debug for Peekable<St> where
    St::Item: Debug
[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<St: Stream> FusedStream for Peekable<St>[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]

type Error = S::Error

The type of value produced by the sink when an error occurs.

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]

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

fn poll_flush(
    self: Pin<&mut Self>,
    cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
[src]

Flush any remaining output from this sink. Read more

fn poll_close(
    self: Pin<&mut Self>,
    cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
[src]

Flush any remaining output and close this sink, if necessary. Read more

impl<S: Stream> Stream for Peekable<S>[src]

type Item = S::Item

Values yielded by the stream.

fn poll_next(
    self: Pin<&mut Self>,
    cx: &mut Context<'_>
) -> Poll<Option<Self::Item>>
[src]

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more

fn size_hint(&self) -> (usize, Option<usize>)[src]

Returns the bounds on the remaining length of the stream. Read more

impl<'__pin, St: Stream> Unpin for Peekable<St> where
    __Origin<'__pin, St>: Unpin
[src]

Auto Trait Implementations

impl<St> RefUnwindSafe for Peekable<St> where
    St: RefUnwindSafe,
    <St as Stream>::Item: RefUnwindSafe

impl<St> Send for Peekable<St> where
    St: Send,
    <St as Stream>::Item: Send

impl<St> Sync for Peekable<St> where
    St: Sync,
    <St as Stream>::Item: Sync

impl<St> UnwindSafe for Peekable<St> where
    St: UnwindSafe,
    <St as Stream>::Item: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

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]

This is supported on crate feature 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]

This is supported on crate feature 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]

This is supported on crate feature 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]

This is supported on crate feature 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]

This is supported on crate feature sink only.

Adds a fixed-size buffer to the current sink. Read more

fn close(&mut self) -> Close<'_, Self, Item>

Notable traits for Close<'_, Si, Item>

impl<Si: Sink<Item> + Unpin + ?Sized, Item> Future for Close<'_, Si, Item> type Output = Result<(), Si::Error>;
where
    Self: Unpin
[src]

This is supported on crate feature 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]

This is supported on crate feature sink only.

Fanout items to multiple sinks. Read more

fn flush(&mut self) -> Flush<'_, Self, Item>

Notable traits for Flush<'_, Si, Item>

impl<Si: Sink<Item> + Unpin + ?Sized, Item> Future for Flush<'_, Si, Item> type Output = Result<(), Si::Error>;
where
    Self: Unpin
[src]

This is supported on crate feature sink only.

Flush the sink, processing all pending items. Read more

fn send(&mut self, item: Item) -> Send<'_, Self, Item>

Notable traits for Send<'_, Si, Item>

impl<Si: Sink<Item> + Unpin + ?Sized, Item> Future for Send<'_, Si, Item> type Output = Result<(), Si::Error>;
where
    Self: Unpin
[src]

This is supported on crate feature 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>

Notable traits for Feed<'_, Si, Item>

impl<Si: Sink<Item> + Unpin + ?Sized, Item> Future for Feed<'_, Si, Item> type Output = Result<(), Si::Error>;
where
    Self: Unpin
[src]

This is supported on crate feature 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>

Notable traits for SendAll<'_, Si, St>

impl<Si: ?Sized, St: ?Sized, Ok, Error> Future for SendAll<'_, Si, St> where
    Si: Sink<Ok, Error = Error> + Unpin,
    St: Stream<Item = Result<Ok, Error>> + Unpin
type Output = Result<(), Error>;
where
    St: TryStream<Ok = Item, Error = Self::Error> + Stream + Unpin,
    Self: Unpin
[src]

This is supported on crate feature 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>

Notable traits for Either<A, B>

impl<A, B> Future for Either<A, B> where
    A: Future,
    B: Future<Output = A::Output>, 
type Output = A::Output;
where
    Si2: Sink<Item, Error = Self::Error>,
    Self: Sized
[src]

This is supported on crate feature 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>

Notable traits for Either<A, B>

impl<A, B> Future for Either<A, B> where
    A: Future,
    B: Future<Output = A::Output>, 
type Output = A::Output;
where
    Si1: Sink<Item, Error = Self::Error>,
    Self: Sized
[src]

This is supported on crate feature 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]

This is supported on crate features sink and compat only.

Wraps a Sink into a sink compatible with libraries using futures 0.1 Sink. Requires the compat feature to be enabled. Read more

fn poll_ready_unpin(
    &mut self,
    cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>> where
    Self: Unpin
[src]

This is supported on crate feature 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]

This is supported on crate feature sink only.

A convenience method for calling Sink::start_send on Unpin sink types. Read more

fn poll_flush_unpin(
    &mut self,
    cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>> where
    Self: Unpin
[src]

This is supported on crate feature sink only.

A convenience method for calling Sink::poll_flush on Unpin sink types. Read more

fn poll_close_unpin(
    &mut self,
    cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>> where
    Self: Unpin
[src]

This is supported on crate feature sink only.

A convenience method for calling Sink::poll_close on Unpin sink types. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<S, T, E> TryStream for S where
    S: Stream<Item = Result<T, E>> + ?Sized
[src]

type Ok = T

The type of successful values yielded by this future

type Error = E

The type of failures yielded by this future

pub fn try_poll_next(
    self: Pin<&mut S>,
    cx: &mut Context<'_>
) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>
[src]

Poll this TryStream as if it were a Stream. Read more