Input

Trait Input 

Source
pub trait Input<'a>: Clone {
Show 15 methods // Required methods fn cur(&self) -> Option<u8>; fn peek(&self) -> Option<u8>; fn peek_ahead(&self) -> Option<u8>; unsafe fn bump_bytes(&mut self, n: usize); fn cur_as_char(&self) -> Option<char>; fn is_at_start(&self) -> bool; fn cur_pos(&self) -> BytePos; fn last_pos(&self) -> BytePos; unsafe fn slice(&mut self, start: BytePos, end: BytePos) -> &'a str; fn uncons_while<F>(&mut self, f: F) -> &'a str where F: FnMut(char) -> bool; unsafe fn reset_to(&mut self, to: BytePos); fn is_str(&self, s: &str) -> bool; // Provided methods fn cur_as_ascii(&self) -> Option<u8> { ... } fn is_byte(&self, c: u8) -> bool { ... } fn eat_byte(&mut self, c: u8) -> bool { ... }
}

Required Methods§

Source

fn cur(&self) -> Option<u8>

Returns the current byte. Returns None if at end of input.

Source

fn peek(&self) -> Option<u8>

Returns the next byte without consuming the current byte.

Source

fn peek_ahead(&self) -> Option<u8>

Returns the byte after the next byte without consuming anything.

Source

unsafe fn bump_bytes(&mut self, n: usize)

Advances the input by exactly n bytes. Unlike bump(), this does not calculate UTF-8 character boundaries.

§Safety
  • This should be called only when cur() returns Some. i.e. when the Input is not empty.
  • n should be the number of bytes of the current character.
Source

fn cur_as_char(&self) -> Option<char>

Returns the current position as a UTF-8 char for cases where we need full character processing (identifiers, strings, etc). Returns None if at end of input or if the bytes don’t form valid UTF-8.

Source

fn is_at_start(&self) -> bool

Source

fn cur_pos(&self) -> BytePos

Source

fn last_pos(&self) -> BytePos

Source

unsafe fn slice(&mut self, start: BytePos, end: BytePos) -> &'a str

§Safety
  • start should be less than or equal to end.
  • start and end should be in the valid range of input.
Source

fn uncons_while<F>(&mut self, f: F) -> &'a str
where F: FnMut(char) -> bool,

Takes items from stream, testing each one with predicate. returns the range of items which passed predicate.

Source

unsafe fn reset_to(&mut self, to: BytePos)

§Safety
  • to be in the valid range of input.
Source

fn is_str(&self, s: &str) -> bool

Implementors can override the method to make it faster.

s must be ASCII only.

Provided Methods§

Source

fn cur_as_ascii(&self) -> Option<u8>

Returns the current byte as ASCII if it’s valid ASCII (0x00-0x7F). Returns None if it’s end of input or if the byte is not ASCII.

Source

fn is_byte(&self, c: u8) -> bool

Check if the current byte equals the given byte. c should typically be an ASCII byte for performance.

Source

fn eat_byte(&mut self, c: u8) -> bool

Implementors can override the method to make it faster.

c must be ASCII.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'a> Input<'a> for StringInput<'a>