Skip to main content

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 { ... } unsafe 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

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

Implementors can override the method to make it faster.

§Safety

c must be ASCII (i.e., c <= 0x7F). Passing a non-ASCII byte may advance the input into the middle of a multi-byte UTF-8 sequence, which would violate the UTF-8 invariant of the underlying &str.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

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