pub struct BinDecoder<'a> { /* private fields */ }
Expand description

This is non-destructive to the inner buffer, b/c for pointer types we need to perform a reverse seek to lookup names

A note on serialization, there was a thought to have this implement the Serde deserializer, but given that this is such a small subset of all the serialization which that performs this is a simpler implementation without the cruft, at least for serializing to/from the binary DNS protocols.

Implementations

Creates a new BinDecoder

Arguments
  • buffer - buffer from which all data will be read

Pop one byte from the buffer

Returns the number of bytes in the buffer

use trust_dns_proto::serialize::binary::BinDecoder;

let deadbeef = b"deadbeef";
let mut decoder = BinDecoder::new(deadbeef);
assert_eq!(decoder.len(), 8);
decoder.read_slice(7).unwrap();
assert_eq!(decoder.len(), 1);

Returns true if the buffer is empty

Peed one byte forward, without moving the current index forward

Returns the current index in the buffer

This is a pretty efficient clone, as the buffer is never cloned, and only the index is set to the value passed in

Reads a String from the buffer

<character-string> is a single
length octet followed by that number of characters.  <character-string>
is treated as binary information, and can be up to 256 characters in
length (including the length octet).
Returns

A String version of the character data

Reads to a maximum length of data, returns an error if this is exceeded

Reads a Vec out of the buffer

Arguments
  • len - number of bytes to read from the buffer
Returns

The Vec of the specified length, otherwise an error

Reads a slice out of the buffer, without allocating

Arguments
  • len - number of bytes to read from the buffer
Returns

The slice of the specified length, otherwise an error

Reads a slice from a previous index to the current

Reads a byte from the buffer, equivalent to Self::pop()

Reads the next 2 bytes into u16

This performs a byte-by-byte manipulation, there which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)

Return

Return the u16 from the buffer

Reads the next four bytes into i32.

This performs a byte-by-byte manipulation, there which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)

Return

Return the i32 from the buffer

Reads the next four bytes into u32.

This performs a byte-by-byte manipulation, there which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)

Return

Return the u32 from the buffer

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.