v3.0.0
Breaking Changes
-
#9
Value::from_serializenow returns aResult. Previously, if a Serialize
implementation returned an error, the function would panic. Thanks to
@wackbyte for finding this. -
Reader::buffered_read_bytesnow takes a third parameter,scratch: &mut Vec<u8>and returns a new typeBufferedBytes. This allows callers to supply
a buffer for reading bytes into rather than requiring implementors allocate
new buffers. -
PartialEqforValuehas been changed such that if the bytes contained by a
string match the bytes contained by a byte value, the values now compare as
equal. Previously, all discriminants required exact matches.This was done due to Pot not knowing whether a value is a string or bytes when
serialized. Bytes are auto-promoted to string if the bytes are valid UTF-8 in
Value deserialization. -
SymbolMapnow utilizes a new structureSymbolListfor managing symbols.
This type optimizes storage of symbols when they are not borrowed from the
deserialization source. -
format::write_atom_headerno longer accepts an option for thearg
parameter. -
format::read_atomnow accepts ascratch: &mut Vec<u8>parameter which is
used when reading an associatedNucleus::Bytes. WhenNucleus::Bytes
containsBufferedBytes::Scratch,scratchwill contain the bytes contained
in the atom. -
SymbolMapRefis now a struct with private contents. -
Erroris now#[non_exhaustive]. -
format::Floatandformat::Integerno longer implement
Serialize/Deserialize. These implementations were derived but never
actually used. To improve this crate's build parallelization, a decision was
made to remove these usages of serde's derive macro. Implementing these traits
would be trivial, but the crate maintainer doesn't believe anyone is actually
using these implementations, so they were intentionally skipped. Please file
an issue if this affected you and you would like to see these implementations
added again.
Changed
pot::Result<T>is nowpot::Result<T,E = pot::Error>. This avoids issues
with other code whenpot::Resultis imported.ValueIteris now exported. This is the type returned fromValue::values().- The Minimum Supported Rust Version (MSRV) has been set to 1.70. This MSRV was
chosen at the time due to dependencies also requiring this MSRV. - Tracing instrumentation has been changed from the default level of INFO to
TRACE. - This crate no longer activates the
derivefeature ofserde.
Added
-
OwnedValuenow implementsFromforValue<'_>and&Value<'_>. -
Valuenow implementsFromIterator<T>whereT: Into<Value<'a>>. The
result will be the variantValue::Sequence. -
Valuenow implementsFromIterator<(K, V)>whereK: Into<Value<'a>>, V: Into<Value<'a>>. The result will be the variantValue::Mappings. -
de::SymbolMapandser::SymbolMapnow both implementSerializeand
Deserializeusing the same serialization strategy. This allows preshared
dictionaries to be used, and for state to be saved and restored. -
de::SymbolMapandser::SymbolMaphave new convenience methods that allow
serializing and deserializing values directly:de::SymbolMap::deserialize_slicede::SymbolMap::deserialize_fromser::SymbolMap::serialize_to_vecser::SymbolMap::serialize_to