Enum combine::error::Consumed[][src]

pub enum Consumed<T> {
    Consumed(T),
    Empty(T),
}

Enum used to indicate if a parser consumed any items of the stream it was given as an input.

This is used by parsers such as or and choice to determine if they should try to parse with another parser as they will only be able to provide good error reporting if the preceding parser did not consume any tokens.

Variants

Constructor indicating that the parser has consumed elements

Constructor indicating that the parser did not consume any elements

Methods

impl<T> Consumed<T>
[src]

Returns true if self is empty.

Extracts the contained value.

Converts self into the Consumed state.

Converts self into the Empty state.

Maps over the contained value without changing the consumed state.

Combines the Consumed flags from self and the result of f.

Empty    <> Empty    -> Empty
Consumed <> Empty    -> Consumed
Empty    <> Consumed -> Consumed
Consumed <> Consumed -> Consumed
//Parses a character of string literal and handles the escaped characters \\ and \" as \
//and " respectively
fn char<I>(input: &mut I) -> ParseResult<char, I>
    where I: Stream<Item = char>,
          I::Error: ParseError<I::Item, I::Range, I::Position>,
{
    let (c, consumed) = try!(satisfy(|c| c != '"').parse_stream(input));
    match c {
        //Since the `char` parser has already consumed some of the input `combine` is used
        //propagate the consumed state to the next part of the parser
        '\\' => consumed.combine(|_| {
            satisfy(|c| c == '"' || c == '\\')
                .map(|c| {
                    match c {
                        '"' => '"',
                        '\\' => '\\',
                        c => c
                    }
                })
                .parse_stream(input)
            }),
        _ => Ok((c, consumed))
    }
}
let result = many(parser(char))
    .easy_parse(r#"abc\"\\"#);
assert_eq!(result, Ok((r#"abc"\"#.to_string(), "")));
}

Trait Implementations

impl<T: Clone> Clone for Consumed<T>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<T: PartialEq> PartialEq for Consumed<T>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<T: Debug> Debug for Consumed<T>
[src]

Formats the value using the given formatter. Read more

impl<T: Copy> Copy for Consumed<T>
[src]

impl<T> AsMut<T> for Consumed<T>
[src]

Performs the conversion.

impl<T> AsRef<T> for Consumed<T>
[src]

Performs the conversion.

Auto Trait Implementations

impl<T> Send for Consumed<T> where
    T: Send

impl<T> Sync for Consumed<T> where
    T: Sync