#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ParseResult<'a, T: AsRef<[u8]>> {
remaining: &'a [u8],
parsed: T,
}
impl<'a, T: AsRef<[u8]>> ParseResult<'a, T> {
pub fn new(remaining: &'a [u8], parsed: T) -> Self {
ParseResult { remaining, parsed }
}
pub fn map<Y, O: FnOnce(Self) -> Y>(self, op: O) -> Y {
op(self)
}
pub fn remaining(&self) -> &'a [u8] {
self.remaining
}
pub fn parsed(&'a self) -> &'a T {
&self.parsed
}
pub fn parsed_owned(self) -> T {
self.parsed
}
pub fn consumed(&self) -> usize {
self.parsed.as_ref().len()
}
}