Struct combine::stream::position::Stream [−][src]
pub struct Stream<Input, X> { pub input: Input, pub positioner: X, }
Expand description
The Stream<Input>
struct maintains the current position in the stream Input
using
the Positioner
trait to track the position.
let result = token(b'9') .message("Not a nine") .easy_parse(position::Stream::new(&b"8"[..])); assert_eq!(result, Err(easy::Errors { position: 0, errors: vec![ easy::Error::Unexpected(b'8'.into()), easy::Error::Expected(b'9'.into()), easy::Error::Message("Not a nine".into()) ] }));
Fields
input: Input
The input stream used when items are requested
positioner: X
The positioner used to update the current position
Implementations
Creates a new Stream<Input, X>
from an input stream and a positioner.
impl<Input> Stream<Input, Input::Positioner> where
Input: StreamOnce + DefaultPositioned,
Input::Positioner: Positioner<Input::Token>,
impl<Input> Stream<Input, Input::Positioner> where
Input: StreamOnce + DefaultPositioned,
Input::Positioner: Positioner<Input::Token>,
Creates a new Stream<Input, X>
from an input stream and its default positioner.
Trait Implementations
impl<Input, X, E> Positioned for Stream<Input, X> where
Input: StreamOnce,
X: Positioner<Input::Token>,
E: StreamError<Input::Token, Input::Range>,
Input::Error: ParseError<Input::Token, Input::Range, X::Position, StreamError = E>,
Input::Error: ParseError<Input::Token, Input::Range, Input::Position, StreamError = E>,
impl<Input, X, E> Positioned for Stream<Input, X> where
Input: StreamOnce,
X: Positioner<Input::Token>,
E: StreamError<Input::Token, Input::Range>,
Input::Error: ParseError<Input::Token, Input::Range, X::Position, StreamError = E>,
Input::Error: ParseError<Input::Token, Input::Range, Input::Position, StreamError = E>,
impl<Input, X, S> RangeStreamOnce for Stream<Input, X> where
Input: RangeStreamOnce,
X: RangePositioner<Input::Token, Input::Range>,
S: StreamError<Input::Token, Input::Range>,
Input::Error: ParseError<Input::Token, Input::Range, X::Position, StreamError = S>,
Input::Error: ParseError<Input::Token, Input::Range, Input::Position, StreamError = S>,
Input::Position: Clone + Ord,
impl<Input, X, S> RangeStreamOnce for Stream<Input, X> where
Input: RangeStreamOnce,
X: RangePositioner<Input::Token, Input::Range>,
S: StreamError<Input::Token, Input::Range>,
Input::Error: ParseError<Input::Token, Input::Range, X::Position, StreamError = S>,
Input::Error: ParseError<Input::Token, Input::Range, Input::Position, StreamError = S>,
Input::Position: Clone + Ord,
Takes size
elements from the stream.
Fails if the length of the stream is less than size
. Read more
fn uncons_while<F>(
&mut self,
predicate: F
) -> Result<Input::Range, StreamErrorFor<Self>> where
F: FnMut(Input::Token) -> bool,
fn uncons_while<F>(
&mut self,
predicate: F
) -> Result<Input::Range, StreamErrorFor<Self>> where
F: FnMut(Input::Token) -> bool,
Takes items from stream, testing each one with predicate
.
returns the range of items which passed predicate
. Read more
fn uncons_while1<F>(
&mut self,
predicate: F
) -> ParseResult<Self::Range, StreamErrorFor<Self>> where
F: FnMut(Self::Token) -> bool,
fn uncons_while1<F>(
&mut self,
predicate: F
) -> ParseResult<Self::Range, StreamErrorFor<Self>> where
F: FnMut(Self::Token) -> bool,
Takes items from stream, testing each one with predicate
returns a range of at least one items which passed predicate
. Read more
Returns the distance between self
and end
. The returned usize
must be so that Read more
impl<Input, X, S> ResetStream for Stream<Input, X> where
Input: ResetStream,
X: Positioner<Input::Token>,
S: StreamError<Input::Token, Input::Range>,
Input::Error: ParseError<Input::Token, Input::Range, X::Position, StreamError = S>,
Input::Error: ParseError<Input::Token, Input::Range, Input::Position, StreamError = S>,
impl<Input, X, S> ResetStream for Stream<Input, X> where
Input: ResetStream,
X: Positioner<Input::Token>,
S: StreamError<Input::Token, Input::Range>,
Input::Error: ParseError<Input::Token, Input::Range, X::Position, StreamError = S>,
Input::Error: ParseError<Input::Token, Input::Range, Input::Position, StreamError = S>,
type Checkpoint = Stream<Input::Checkpoint, X::Checkpoint>
Creates a Checkpoint
at the current position which can be used to reset the stream
later to the current position Read more
impl<Input, X, S> StreamOnce for 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>,
impl<Input, X, S> StreamOnce for 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>,
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. Read more
Type which represents the position in a stream.
Ord
is required to allow parsers to determine which of two positions are further ahead. Read more
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. Read more
Returns true
if this stream only contains partial input. Read more
Auto Trait Implementations
impl<Input, X> RefUnwindSafe for Stream<Input, X> where
Input: RefUnwindSafe,
X: RefUnwindSafe,
impl<Input, X> UnwindSafe for Stream<Input, X> where
Input: UnwindSafe,
X: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more