Trait combine::StreamOnce

source ·
pub trait StreamOnce {
    type Token: Clone;
    type Range: Clone;
    type Position: Clone + Ord;
    type Error: ParseError<Self::Token, Self::Range, Self::Position>;

    // Required method
    fn uncons(&mut self) -> Result<Self::Token, StreamErrorFor<Self>>;

    // Provided method
    fn is_partial(&self) -> bool { ... }
}
Expand description

StreamOnce represents a sequence of items that can be extracted one by one.

Required Associated Types§

source

type Token: Clone

The type of items which is yielded from this stream.

source

type Range: Clone

The type of a range of items yielded from this stream. Types which do not a have a way of yielding ranges of items should just use the Self::Token for this type.

source

type Position: Clone + Ord

Type which represents the position in a stream. Ord is required to allow parsers to determine which of two positions are further ahead.

source

type Error: ParseError<Self::Token, Self::Range, Self::Position>

Required Methods§

source

fn uncons(&mut self) -> Result<Self::Token, StreamErrorFor<Self>>

Takes a stream and removes its first token, yielding the token and the rest of the elements. Returns Err if no element could be retrieved.

Provided Methods§

source

fn is_partial(&self) -> bool

Returns true if this stream only contains partial input.

See PartialStream.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a> StreamOnce for &'a str

source§

impl<'a, I> StreamOnce for &'a mut I
where I: StreamOnce + ?Sized,

§

type Token = <I as StreamOnce>::Token

§

type Range = <I as StreamOnce>::Range

§

type Position = <I as StreamOnce>::Position

§

type Error = <I as StreamOnce>::Error

source§

fn uncons(&mut self) -> Result<Self::Token, StreamErrorFor<Self>>

source§

fn is_partial(&self) -> bool

source§

impl<'a, T> StreamOnce for &'a [T]
where T: Clone + PartialEq,

§

type Token = T

§

type Range = &'a [T]

§

type Position = PointerOffset<[T]>

§

type Error = UnexpectedParse

source§

fn uncons(&mut self) -> Result<T, StreamErrorFor<Self>>

Implementors§

source§

impl<'a, T> StreamOnce for SliceStream<'a, T>
where T: PartialEq + 'a,

source§

impl<Input> StreamOnce for combine::stream::buffered::Stream<Input>
where Input: StreamOnce + Positioned, Input::Token: Clone,

Available on crate feature alloc only.
§

type Token = <Input as StreamOnce>::Token

§

type Range = <Input as StreamOnce>::Range

§

type Position = <Input as StreamOnce>::Position

§

type Error = <Input as StreamOnce>::Error

source§

impl<Input, X, S> StreamOnce for combine::stream::position::Stream<Input, X>
where Input: StreamOnce, X: Positioner<Input::Token>, S: StreamError<Input::Token, Input::Range>, Input::Error: ParseError<Input::Token, Input::Range, X::Position, StreamError = S> + ParseError<Input::Token, Input::Range, Input::Position, StreamError = S>,

§

type Token = <Input as StreamOnce>::Token

§

type Range = <Input as StreamOnce>::Range

§

type Position = <X as Positioner<<Input as StreamOnce>::Token>>::Position

§

type Error = <Input as StreamOnce>::Error

source§

impl<Input: Iterator> StreamOnce for IteratorStream<Input>
where Input::Item: Clone + PartialEq,

§

type Token = <Input as Iterator>::Item

§

type Range = <Input as Iterator>::Item

§

type Position = ()

§

type Error = UnexpectedParse

source§

impl<R: Read> StreamOnce for combine::stream::read::Stream<R>

Available on crate feature std only.
§

type Token = u8

§

type Range = &'static [u8]

§

type Position = usize

§

type Error = Error

source§

impl<S> StreamOnce for combine::stream::easy::Stream<S>

Available on crate feature std only.
§

type Token = <S as StreamOnce>::Token

§

type Range = <S as StreamOnce>::Range

§

type Position = <S as StreamOnce>::Position

§

type Error = Errors<<S as StreamOnce>::Token, <S as StreamOnce>::Range, <S as StreamOnce>::Position>

source§

impl<S> StreamOnce for CompleteStream<S>
where S: StreamOnce,

§

type Token = <S as StreamOnce>::Token

§

type Range = <S as StreamOnce>::Range

§

type Position = <S as StreamOnce>::Position

§

type Error = <S as StreamOnce>::Error

source§

impl<S> StreamOnce for MaybePartialStream<S>
where S: StreamOnce,

§

type Token = <S as StreamOnce>::Token

§

type Range = <S as StreamOnce>::Range

§

type Position = <S as StreamOnce>::Position

§

type Error = <S as StreamOnce>::Error

source§

impl<S> StreamOnce for PartialStream<S>
where S: StreamOnce,

§

type Token = <S as StreamOnce>::Token

§

type Range = <S as StreamOnce>::Range

§

type Position = <S as StreamOnce>::Position

§

type Error = <S as StreamOnce>::Error

source§

impl<S, E> StreamOnce for combine::stream::span::Stream<S, E>

§

type Token = <S as StreamOnce>::Token

§

type Range = <S as StreamOnce>::Range

§

type Position = Span<<S as StreamOnce>::Position>

§

type Error = E

source§

impl<S, U> StreamOnce for combine::stream::state::Stream<S, U>
where S: StreamOnce,

§

type Token = <S as StreamOnce>::Token

§

type Range = <S as StreamOnce>::Range

§

type Position = <S as StreamOnce>::Position

§

type Error = <S as StreamOnce>::Error