[][src]Trait combine::RangeStreamOnce

pub trait RangeStreamOnce: StreamOnce + Resetable {
    fn uncons_range(
        &mut self,
        size: usize
    ) -> Result<Self::Range, StreamErrorFor<Self>>;
fn uncons_while<F>(
        &mut self,
        f: F
    ) -> Result<Self::Range, StreamErrorFor<Self>>
    where
        F: FnMut(Self::Item) -> bool
;
fn distance(&self, end: &Self::Checkpoint) -> usize; fn uncons_while1<F>(
        &mut self,
        f: F
    ) -> FastResult<Self::Range, StreamErrorFor<Self>>
    where
        F: FnMut(Self::Item) -> bool
, { ... } }

A RangeStream is an extension of StreamOnce which allows for zero copy parsing.

Required methods

fn uncons_range(
    &mut self,
    size: usize
) -> Result<Self::Range, StreamErrorFor<Self>>

Takes size elements from the stream. Fails if the length of the stream is less than size.

fn uncons_while<F>(&mut self, f: F) -> Result<Self::Range, StreamErrorFor<Self>> where
    F: FnMut(Self::Item) -> bool

Takes items from stream, testing each one with predicate. returns the range of items which passed predicate.

fn distance(&self, end: &Self::Checkpoint) -> usize

Returns the distance between self and end. The returned usize must be so that

This example is not tested
let start = stream.checkpoint();
stream.uncons_range(distance);
stream.distance(&start) == distance
Loading content...

Provided methods

fn uncons_while1<F>(
    &mut self,
    f: F
) -> FastResult<Self::Range, StreamErrorFor<Self>> where
    F: FnMut(Self::Item) -> bool

Takes items from stream, testing each one with predicate returns a range of at least one items which passed predicate.

Note

This may not return EmptyOk as it should uncons at least one item.

Loading content...

Implementations on Foreign Types

impl<'a> RangeStreamOnce for &'a str
[src]

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

Loading content...

Implementors

impl<'a, T> RangeStreamOnce for SliceStream<'a, T> where
    T: PartialEq + 'a, 
[src]

impl<I, X, S> RangeStreamOnce for State<I, X> where
    I: RangeStreamOnce,
    X: Resetable + RangePositioner<I::Item, I::Range>,
    S: StreamError<I::Item, I::Range>,
    I::Error: ParseError<I::Item, I::Range, X::Position, StreamError = S>,
    I::Error: ParseError<I::Item, I::Range, I::Position, StreamError = S>,
    I::Position: Clone + Ord
[src]

impl<S> RangeStreamOnce for Stream<S> where
    S: RangeStream
[src]

impl<S> RangeStreamOnce for PartialStream<S> where
    S: RangeStreamOnce
[src]

Loading content...