Struct bparse::Parser

source ·
pub struct Parser<'input> {
    pub pos: usize,
    /* private fields */
}
Expand description

A byte parser that recognizes Patterns

Fields§

§pos: usize

The parser’s current position within the input

Implementations§

source§

impl<'i> Parser<'i>

source

pub fn new(input: &'i [u8]) -> Self

Returns a new instance of Parser that will operate on input

source

pub fn advance(&mut self, step: usize)

Advances the parser by step. Does nothing if the parser is at the end of the input

source

pub fn eof(&self) -> bool

Returns true if the parser reached the end of its input. Returns false otherwise

source

pub fn remaining(&self) -> &'i [u8]

Returns the part of the input that is yet to be consumed

source

pub fn try_match(&mut self, pattern: impl Pattern) -> Option<&'i [u8]>

Tests pattern against the remaining input. If the pattern matches, the matching portion is returned and the parser is advanced by the length of the matched slice.

Returns None if the pattern does not match.

source

pub fn peek_match(&self, pattern: impl Pattern) -> Option<&'i [u8]>

Tests pattern against the remaining input but does not advance the parser. The matching portion is returned.

You can use Parser::assert later to advance the parser with the same pattern.

source

pub fn assert(&mut self, pattern: impl Pattern) -> &'i [u8]

Similar to Parser::try_match, but panics if the pattern does not match.

This could be useful when you have previously peeked at the input (perhaps by using Pattern::test or Parser::peek_match) and later want to advance the parser

Auto Trait Implementations§

§

impl<'input> Freeze for Parser<'input>

§

impl<'input> RefUnwindSafe for Parser<'input>

§

impl<'input> Send for Parser<'input>

§

impl<'input> Sync for Parser<'input>

§

impl<'input> Unpin for Parser<'input>

§

impl<'input> UnwindSafe for Parser<'input>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.