pub enum Consumed<T> {
Consumed(T),
Empty(T),
}
Expand description
Enum used to indicate if a parser consumed any items of the stream it was given as an input
Variants§
Consumed(T)
Constructor indicating that the parser has consumed elements
Empty(T)
Constructor indicating that the parser did not consume any elements
Implementations§
Source§impl<T> Consumed<T>
impl<T> Consumed<T>
Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Extracts the contained value
Sourcepub fn as_consumed(self) -> Consumed<T>
pub fn as_consumed(self) -> Consumed<T>
Converts self
into the Consumed state
Sourcepub fn map<F, U>(self, f: F) -> Consumed<U>where
F: FnOnce(T) -> U,
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
Sourcepub fn combine<F, U, I>(self, f: F) -> ParseResult<U, I, I::Item>
pub fn combine<F, U, I>(self, f: F) -> ParseResult<U, I, I::Item>
Combines the Consumed flags from self
and the result of f
//Parses a characther of string literal and handles the escaped characthers \\ and \" as \
//and " respectively
fn char(input: State<&str>) -> ParseResult<char, &str> {
let (c, input) = try!(satisfy(|c| c != '"').parse_state(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
'\\' => input.combine(|input| {
satisfy(|c| c == '"' || c == '\\')
.map(|c| {
match c {
'"' => '"',
'\\' => '\\',
c => c
}
})
.parse_state(input)
}),
_ => Ok((c, input))
}
}
let result = many(parser(char))
.parse(r#"abc\"\\"#);
assert_eq!(result, Ok((r#"abc"\"#.to_string(), "")));
}
Trait Implementations§
impl<T: Copy> Copy for Consumed<T>
impl<T> StructuralPartialEq for Consumed<T>
Auto Trait Implementations§
impl<T> Freeze for Consumed<T>where
T: Freeze,
impl<T> RefUnwindSafe for Consumed<T>where
T: RefUnwindSafe,
impl<T> Send for Consumed<T>where
T: Send,
impl<T> Sync for Consumed<T>where
T: Sync,
impl<T> Unpin for Consumed<T>where
T: Unpin,
impl<T> UnwindSafe for Consumed<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more