# Struct untrusted::Reader [−] [src]

    pub struct Reader<'a> { /* fields omitted */ }

A read-only, forward-only* cursor into the data in an `Input`.

Using `Reader` to parse input helps to ensure that no byte of the input will be accidentally processed more than once. Using `Reader` in conjunction with `read_all`, `read_all_mut`, and `read_all_optional` helps ensure that no byte of the input is accidentally left unprocessed. The methods of `Reader` never panic, so `Reader` also assists the writing of panic-free code.

* `Reader` is not strictly forward-only because of the method `get_input_between_marks`, which is provided mainly to support calculating digests over parsed data.

## Methods

### `impl<'a> Reader<'a>`
[src]

#### `fn new(input: Input<'a>) -> Reader<'a>`

Construct a new Reader for the given input. Use `read_all`, `read_all_mut`, or `read_all_optional` instead of `Reader::new` whenever possible.

#### `fn at_end(&self) -> bool`

Returns `true` if the reader is at the end of the input, and `false` otherwise.

#### `fn get_input_between_marks(
&self,
mark1: Mark,
mark2: Mark
) -> Result<Input<'a>, EndOfInput>`

Returns an `Input` for already-parsed input that has had its boundaries marked using `mark`.

#### `fn mark(&self) -> Mark`

Return the current position of the `Reader` for future use in a call to `get_input_between_marks`.

#### `fn peek(&self, b: u8) -> bool`

Returns `true` if there is at least one more byte in the input and that byte is equal to `b`, and false otherwise.

#### `fn read_byte(&mut self) -> Result<u8, EndOfInput>`

Reads the next input byte.

Returns `Ok(b)` where `b` is the next input byte, or `Err(EndOfInput)` if the `Reader` is at the end of the input.

#### `fn skip(&mut self, num_bytes: usize) -> Result<(), EndOfInput>`

Skips `num_bytes` of the input.

Returns `Ok(())` if there are at least `num_bytes` of input remaining, and `Err(EndOfInput)` otherwise.

#### `fn skip_and_get_input(
&mut self,
num_bytes: usize
) -> Result<Input<'a>, EndOfInput>`

Skips `num_bytes` of the input, returning the skipped input as an `Input`.

Returns `Ok(i)` where `i` is an `Input` if there are at least `num_bytes` of input remaining, and `Err(EndOfInput)` otherwise.

#### `fn skip_to_end(&mut self) -> Input<'a>`

Skips the reader to the end of the input, returning the skipped input as an `Input`.

## Trait Implementations

### `impl<'a> Debug for Reader<'a>`
[src]

#### `fn fmt(&self, __arg_0: &mut Formatter) -> Result`

Formats the value using the given formatter.

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)