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
Consumed(T)Constructor indicating that the parser has consumed elements
Empty(T)Constructor indicating that the parser did not consume any elements
Methods
impl<T> Consumed<T>[src]
impl<T> Consumed<T>pub fn is_empty(&self) -> bool[src]
pub fn is_empty(&self) -> boolReturns true if self is empty.
pub fn into_inner(self) -> T[src]
pub fn into_inner(self) -> TExtracts the contained value.
pub fn into_consumed(self) -> Consumed<T>[src]
pub fn into_consumed(self) -> Consumed<T>Converts self into the Consumed state.
pub fn into_empty(self) -> Consumed<T>[src]
pub fn into_empty(self) -> Consumed<T>Converts self into the Empty state.
pub fn map<F, U>(self, f: F) -> Consumed<U> where
F: FnOnce(T) -> U, [src]
pub fn map<F, U>(self, f: F) -> Consumed<U> where
F: FnOnce(T) -> U, Maps over the contained value without changing the consumed state.
pub fn merge(&self, current: Consumed<T>) -> Consumed<T>[src]
pub fn merge(&self, current: Consumed<T>) -> Consumed<T>pub fn combine<F, U, E>(self, f: F) -> ParseResult2<U, E> where
F: FnOnce(T) -> ParseResult2<U, E>, [src]
pub fn combine<F, U, E>(self, f: F) -> ParseResult2<U, E> where
F: FnOnce(T) -> ParseResult2<U, E>, 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(), ""))); }
pub fn combine_consumed<F, U, E>(self, f: F) -> FastResult<U, E> where
F: FnOnce(T) -> FastResult<U, E>, [src]
pub fn combine_consumed<F, U, E>(self, f: F) -> FastResult<U, E> where
F: FnOnce(T) -> FastResult<U, E>, Trait Implementations
impl<T: Clone> Clone for Consumed<T>[src]
impl<T: Clone> Clone for Consumed<T>fn clone(&self) -> Consumed<T>[src]
fn clone(&self) -> Consumed<T>Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)Performs copy-assignment from source. Read more
impl<T: PartialEq> PartialEq for Consumed<T>[src]
impl<T: PartialEq> PartialEq for Consumed<T>fn eq(&self, other: &Consumed<T>) -> bool[src]
fn eq(&self, other: &Consumed<T>) -> boolThis method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, other: &Consumed<T>) -> bool[src]
fn ne(&self, other: &Consumed<T>) -> boolThis method tests for !=.
impl<T: Debug> Debug for Consumed<T>[src]
impl<T: Debug> Debug for Consumed<T>fn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl<T: Copy> Copy for Consumed<T>[src]
impl<T: Copy> Copy for Consumed<T>impl<T> AsMut<T> for Consumed<T>[src]
impl<T> AsMut<T> for Consumed<T>impl<T> AsRef<T> for Consumed<T>[src]
impl<T> AsRef<T> for Consumed<T>