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 set_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::builder().canonical(true).build();
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 builder() -> SerializerConfigBuilder
pub const fn builder() -> SerializerConfigBuilder
Returns a builder for the configuration (see SerializerConfigBuilder).
Sourcepub const fn into_builder(self) -> SerializerConfigBuilder
pub const fn into_builder(self) -> SerializerConfigBuilder
Returns a builder that starts with this configuration.
Sourcepub fn set_context(&mut self, context: Context)
pub fn set_context(&mut self, context: Context)
Sets the context the values are serialized in.
The values of the context are the defaults of the extension values
of the state (see Context), for instance
the BytesFormat. The serializers and
writers created with the configuration use this context. A context set on
the driver takes precedence.
Sourcepub const fn set_canonical(&mut self, yes: bool)
pub const fn set_canonical(&mut self, yes: bool)
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<T: Serialize + ?Sized>(&self, value: &T) -> Result<Vec<u8>, Error>
pub fn to_vec<T: Serialize + ?Sized>(&self, value: &T) -> Result<Vec<u8>, Error>
Serializes the given value.
Sourcepub fn to_vec_with<F, T: Serialize + ?Sized>(
&self,
value: &T,
setup: F,
) -> Result<Vec<u8>, Error>where
F: FnOnce(&mut SerializeDriver<'_>),
pub fn to_vec_with<F, T: Serialize + ?Sized>(
&self,
value: &T,
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']);