pub struct SerializerConfig { /* private fields */ }Expand description
Configures how values are serialized to MessagePack.
Integers and the lengths of strings, binary data, arrays and maps are
written in their shortest form. Floats keep their precision: f32 is
written as float 32 and f64 as float 64.
If canonical is enabled, the output is additionally
deterministic: the entries of maps are sorted by the bytewise
lexicographic order of their encoded keys and duplicate keys are
rejected.
use std::collections::HashMap;
use deser_msgpack::SerializerConfig;
const CANONICAL: SerializerConfig =
SerializerConfig::new().canonical(true);
let map = HashMap::from([("b", 1), ("a", 2)]);
assert_eq!(CANONICAL.to_vec(&map).unwrap(), b"\x82\xa1a\x02\xa1b\x01");Implementations§
Source§impl SerializerConfig
impl SerializerConfig
Sourcepub const fn new() -> SerializerConfig
pub const fn new() -> SerializerConfig
Creates the default configuration.
Sourcepub const fn canonical(self, yes: bool) -> SerializerConfig
pub const fn canonical(self, yes: bool) -> SerializerConfig
Enables or disables the deterministic encoding.
When enabled, the entries of maps are sorted by the bytewise
lexicographic order of their encoded keys and duplicate keys are an
error. This makes the output independent of the iteration
order of maps such as HashMap.
Sourcepub fn to_vec(&self, value: &dyn Serialize) -> Result<Vec<u8>, Error>
pub fn to_vec(&self, value: &dyn Serialize) -> Result<Vec<u8>, Error>
Serializes the given value.
Sourcepub fn to_vec_with<F>(
&self,
value: &dyn Serialize,
setup: F,
) -> Result<Vec<u8>, Error>where
F: FnOnce(&mut SerializeDriver<'_>),
pub fn to_vec_with<F>(
&self,
value: &dyn Serialize,
setup: F,
) -> Result<Vec<u8>, Error>where
F: FnOnce(&mut SerializeDriver<'_>),
Serializes the given value with a configured driver.
The callback is invoked with the driver before the serialization
starts, for instance to add Layers.
Source§impl SerializerConfig
impl SerializerConfig
Sourcepub fn writer<W: Write>(&self, writer: W) -> Writer<W, Serializer>
pub fn writer<W: Write>(&self, writer: W) -> Writer<W, Serializer>
Creates a writer of MessagePack items to a stream
(see deser::io::Writer).
The items follow each other without separators.
use deser_msgpack::SerializerConfig;
let mut writer = SerializerConfig::new().writer(Vec::new());
writer.write(&1u32).unwrap();
writer.write(&"hi").unwrap();
assert_eq!(writer.into_inner(), [0x01, 0xa2, b'h', b'i']);