Struct serde_rosmsg::Deserializer [] [src]

pub struct Deserializer<R> { /* fields omitted */ }

A structure for deserializing ROSMSG into Rust values.

The structure does not read the object size prefix. It's the user's responsibility to pass the expected object size themselves.

Prefer using from_reader, from_slice and from_str.

Methods

impl<R> Deserializer<R> where
    R: Read
[src]

Create a new ROSMSG deserializer.

The value of expected_length tells the deserializer how long the data that we want to read is.

Examples

use serde::de::Deserialize;

let data = b"\x0d\0\0\0Hello, World!\xAE";
let length = data.len();
let cursor = std::io::Cursor::new(&data);
let mut de = Deserializer::new(cursor, length as u32);
assert_eq!(String::deserialize(&mut de).unwrap(), "Hello, World!");
assert_eq!(u8::deserialize(&mut de).unwrap(), 0xAE);

Unwrap the Reader from the Deserializer.

Examples

use serde::de::Deserialize;

let data = [2, 4, 8, 16];
let cursor = std::io::Cursor::new(&data);
let mut de = Deserializer::new(cursor, 2);
assert_eq!(u16::deserialize(&mut de).unwrap(), 1026);
let cursor_new = de.into_inner();
let mut de_new = Deserializer::new(cursor_new, 2);
assert_eq!(u16::deserialize(&mut de_new).unwrap(), 4104);

Check if the deserializer is fully read.

If this is true, one cannot read from the deserializer anymore, and should use a different deserializer.

Examples

use serde::de::Deserialize;

let data = [2, 4, 8, 16];
let mut de = Deserializer::new(std::io::Cursor::new(&data), 4);
assert_eq!(de.is_fully_read(), false);  // Still 4 bytes left to read
u16::deserialize(&mut de).unwrap();     // Read 2 bytes
assert_eq!(de.is_fully_read(), false);  // Still 2 bytes left to read
u16::deserialize(&mut de).unwrap();     // Read 2 bytes
assert_eq!(de.is_fully_read(), true);   // No more bytes left to read
u16::deserialize(&mut de).unwrap_err(); // Failure to read more

Trait Implementations

impl<'de, 'a, R: Read> Deserializer<'de> for &'a mut Deserializer<R>
[src]

The error type that can be returned if some error occurs during deserialization. Read more

Require the Deserializer to figure out how to drive the visitor based on what data type is in the input. Read more

Hint that the Deserialize type is expecting the name of a struct field or the discriminant of an enum variant. Read more

Hint that the Deserialize type is expecting a bool value.

Hint that the Deserialize type is expecting a u8 value.

Hint that the Deserialize type is expecting an i8 value.

Hint that the Deserialize type is expecting a u16 value.

Hint that the Deserialize type is expecting a u32 value.

Hint that the Deserialize type is expecting a u64 value.

Hint that the Deserialize type is expecting an i16 value.

Hint that the Deserialize type is expecting an i32 value.

Hint that the Deserialize type is expecting an i64 value.

Hint that the Deserialize type is expecting a f32 value.

Hint that the Deserialize type is expecting a f64 value.

Hint that the Deserialize type is expecting a char value.

Hint that the Deserialize type is expecting a string value and does not benefit from taking ownership of buffered data owned by the Deserializer. Read more

Hint that the Deserialize type is expecting a string value and would benefit from taking ownership of buffered data owned by the Deserializer. Read more

Hint that the Deserialize type is expecting a byte array and does not benefit from taking ownership of buffered data owned by the Deserializer. Read more

Hint that the Deserialize type is expecting a byte array and would benefit from taking ownership of buffered data owned by the Deserializer. Read more

Hint that the Deserialize type is expecting an optional value. Read more

Hint that the Deserialize type is expecting a unit value.

Hint that the Deserialize type is expecting a unit struct with a particular name. Read more

Hint that the Deserialize type is expecting a newtype struct with a particular name. Read more

Hint that the Deserialize type is expecting a sequence of values.

Hint that the Deserialize type is expecting a sequence of values and knows how many values there are without looking at the serialized data. Read more

Hint that the Deserialize type is expecting a tuple struct with a particular name and number of fields. Read more

Hint that the Deserialize type is expecting a map of key-value pairs.

Hint that the Deserialize type is expecting a struct with a particular name and fields. Read more

Hint that the Deserialize type is expecting an enum value with a particular name and possible variants. Read more

Hint that the Deserialize type needs to deserialize a value whose type doesn't matter because it is ignored. Read more