Struct cbor::DirectDecoder [−][src]
pub struct DirectDecoder<R> { /* fields omitted */ }
Experimental and incomplete direct decoder.
WARNING: Do not use this to decode CBOR data that you don't control. It is currently subject to an attack vector that permits an attacker to cause your process to abort due to an out-of-memory error. See: https://github.com/rust-lang/rustc-serialize/issues/115 (The normal decoder in this crate is not subject to this problem.)
A "direct" decoder is one that does not use an intermediate abstact syntax representation. Namely, the bytes are decoded directly into types. This significantly impacts performance. For example, it doesn't have to box and unbox every data item.
However, implementing a direct decoder is much harder in the existing
serialization infrastructure. Currently, structs and enums are not
implemented. (But Vec
s, tuples, Option
s and maps should work.)
Methods
impl CborDecoder<Cursor<Vec<u8>>>
[src]
impl CborDecoder<Cursor<Vec<u8>>>
pub fn from_bytes<'a, T>(bytes: T) -> CborDecoder<Cursor<Vec<u8>>> where
T: Into<Vec<u8>>,
[src]
pub fn from_bytes<'a, T>(bytes: T) -> CborDecoder<Cursor<Vec<u8>>> where
T: Into<Vec<u8>>,
Create a new CBOR decoder that reads from the buffer given.
The buffer is usually given as either a Vec<u8>
or a &[u8]
.
impl<R: Read> CborDecoder<BufReader<R>>
[src]
impl<R: Read> CborDecoder<BufReader<R>>
pub fn from_reader(rdr: R) -> CborDecoder<BufReader<R>>
[src]
pub fn from_reader(rdr: R) -> CborDecoder<BufReader<R>>
Create a new CBOR decoder that reads from the reader given.
Trait Implementations
impl<R: Read> RustcDecoder for CborDecoder<R>
[src]
impl<R: Read> RustcDecoder for CborDecoder<R>
type Error = CborError
The error type for method results.
fn error(&mut self, err: &str) -> CborError
[src]
fn error(&mut self, err: &str) -> CborError
Record a decoding error. Read more
fn read_nil(&mut self) -> CborResult<()>
[src]
fn read_nil(&mut self) -> CborResult<()>
Read a nil value.
fn read_usize(&mut self) -> CborResult<usize>
[src]
fn read_usize(&mut self) -> CborResult<usize>
Read a usize value.
fn read_u64(&mut self) -> CborResult<u64>
[src]
fn read_u64(&mut self) -> CborResult<u64>
Read a u64 value.
fn read_u32(&mut self) -> CborResult<u32>
[src]
fn read_u32(&mut self) -> CborResult<u32>
Read a u32 value.
fn read_u16(&mut self) -> CborResult<u16>
[src]
fn read_u16(&mut self) -> CborResult<u16>
Read a u16 value.
fn read_u8(&mut self) -> CborResult<u8>
[src]
fn read_u8(&mut self) -> CborResult<u8>
Read a u8 value.
fn read_isize(&mut self) -> CborResult<isize>
[src]
fn read_isize(&mut self) -> CborResult<isize>
Read a isize value.
fn read_i64(&mut self) -> CborResult<i64>
[src]
fn read_i64(&mut self) -> CborResult<i64>
Read a i64 value.
fn read_i32(&mut self) -> CborResult<i32>
[src]
fn read_i32(&mut self) -> CborResult<i32>
Read a i32 value.
fn read_i16(&mut self) -> CborResult<i16>
[src]
fn read_i16(&mut self) -> CborResult<i16>
Read a i16 value.
fn read_i8(&mut self) -> CborResult<i8>
[src]
fn read_i8(&mut self) -> CborResult<i8>
Read a i8 value.
fn read_bool(&mut self) -> CborResult<bool>
[src]
fn read_bool(&mut self) -> CborResult<bool>
Read a bool value.
fn read_f64(&mut self) -> CborResult<f64>
[src]
fn read_f64(&mut self) -> CborResult<f64>
Read a f64 value.
fn read_f32(&mut self) -> CborResult<f32>
[src]
fn read_f32(&mut self) -> CborResult<f32>
Read a f32 value.
fn read_char(&mut self) -> CborResult<char>
[src]
fn read_char(&mut self) -> CborResult<char>
Read a char value.
fn read_str(&mut self) -> CborResult<String>
[src]
fn read_str(&mut self) -> CborResult<String>
Read a string value.
fn read_enum<T, F>(&mut self, _name: &str, _f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_enum<T, F>(&mut self, _name: &str, _f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read an enumeration value. Read more
fn read_enum_variant<T, F>(&mut self, _names: &[&str], _f: F) -> CborResult<T> where
F: FnMut(&mut CborDecoder<R>, usize) -> CborResult<T>,
[src]
fn read_enum_variant<T, F>(&mut self, _names: &[&str], _f: F) -> CborResult<T> where
F: FnMut(&mut CborDecoder<R>, usize) -> CborResult<T>,
Read an enumeration value. Read more
fn read_enum_variant_arg<T, F>(&mut self, _a_idx: usize, _f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_enum_variant_arg<T, F>(&mut self, _a_idx: usize, _f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read an unnamed data item for an enumeration variant. Read more
fn read_enum_struct_variant<T, F>(
&mut self,
_names: &[&str],
_f: F
) -> CborResult<T> where
F: FnMut(&mut CborDecoder<R>, usize) -> CborResult<T>,
[src]
fn read_enum_struct_variant<T, F>(
&mut self,
_names: &[&str],
_f: F
) -> CborResult<T> where
F: FnMut(&mut CborDecoder<R>, usize) -> CborResult<T>,
Read an enumeration value. Read more
fn read_enum_struct_variant_field<T, F>(
&mut self,
_f_name: &str,
_f_idx: usize,
_f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_enum_struct_variant_field<T, F>(
&mut self,
_f_name: &str,
_f_idx: usize,
_f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read a named data item for an enumeration variant. Read more
fn read_struct<T, F>(
&mut self,
_s_name: &str,
_len: usize,
_f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_struct<T, F>(
&mut self,
_s_name: &str,
_len: usize,
_f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read an struct value. Read more
fn read_struct_field<T, F>(
&mut self,
_f_name: &str,
_f_idx: usize,
_f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_struct_field<T, F>(
&mut self,
_f_name: &str,
_f_idx: usize,
_f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read a field for a struct value. Read more
fn read_tuple<T, F>(&mut self, len: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_tuple<T, F>(&mut self, len: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read a tuple value. Read more
fn read_tuple_arg<T, F>(&mut self, _a_idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_tuple_arg<T, F>(&mut self, _a_idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read a data item for a tuple. Read more
fn read_tuple_struct<T, F>(
&mut self,
_s_name: &str,
len: usize,
f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_tuple_struct<T, F>(
&mut self,
_s_name: &str,
len: usize,
f: F
) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read a tuple struct value. Read more
fn read_tuple_struct_arg<T, F>(&mut self, _a_idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_tuple_struct_arg<T, F>(&mut self, _a_idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read a data item for a tuple struct. Read more
fn read_option<T, F>(&mut self, f: F) -> CborResult<T> where
F: FnMut(&mut CborDecoder<R>, bool) -> CborResult<T>,
[src]
fn read_option<T, F>(&mut self, f: F) -> CborResult<T> where
F: FnMut(&mut CborDecoder<R>, bool) -> CborResult<T>,
Read an optional value. Read more
fn read_seq<T, F>(&mut self, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>, usize) -> CborResult<T>,
[src]
fn read_seq<T, F>(&mut self, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>, usize) -> CborResult<T>,
Read a sequence of values. Read more
fn read_seq_elt<T, F>(&mut self, _idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_seq_elt<T, F>(&mut self, _idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read an element in the sequence. Read more
fn read_map<T, F>(&mut self, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>, usize) -> CborResult<T>,
[src]
fn read_map<T, F>(&mut self, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>, usize) -> CborResult<T>,
Read an associative container (map). Read more
fn read_map_elt_key<T, F>(&mut self, _idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_map_elt_key<T, F>(&mut self, _idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read the key for an entry in a map. Read more
fn read_map_elt_val<T, F>(&mut self, _idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
[src]
fn read_map_elt_val<T, F>(&mut self, _idx: usize, f: F) -> CborResult<T> where
F: FnOnce(&mut CborDecoder<R>) -> CborResult<T>,
Read the value for an entry in a map. Read more
Auto Trait Implementations
impl<R> Send for DirectDecoder<R> where
R: Send,
impl<R> Send for DirectDecoder<R> where
R: Send,
impl<R> Sync for DirectDecoder<R> where
R: Sync,
impl<R> Sync for DirectDecoder<R> where
R: Sync,