Skip to content

v0.37.0 - serde & errors imporvements

Compare
Choose a tag to compare
@Mingun Mingun released this 27 Oct 22:04
· 11 commits to master since this release

What's Changed

⚠️ Significant Changes

Those changes could require not trivial adoption of your code:

  • The recognized boolean values in serde Deserializer are reduced. Use #[serde(deserialize_with)] which will accept and parse strings if you need the old behavior.
  • Serializer no longer serialize consequent primitive values (those which would produce only text, without surrounding tags), because it is impossible to deserialize them back to the same value.
  • The crate's errors was changed, some variants was splitted to their own error types, some removed.

New Features

  • #826: Implement From<String> and From<Cow<str>> for quick_xml::de::Text.
  • #826: Make SimpleTypeDeserializer and SimpleTypeSerializer public.
  • #826: Implement IntoDeserializer for &mut Deserializer.

Bug Fixes

  • #655: Do not write indent before and after $text fields and those $value fields that are serialized as a text (for example, usize or String).
  • #826: Handle only those boolean representations that are allowed by Xml Schema which is only "true", "1", "false", and "0". Previously the following values also was accepted:
    bool XML content
    true "True", "TRUE", "t", "Yes", "YES", "yes", "y"
    false "False", "FALSE", "f", "No", "NO", "no", "n"

Misc Changes

  • #227: Split SeError from DeError in the serialize feature. Serialize functions and methods now return SeError.
  • #810: Return std::io::Error from Writer methods.
  • #811: Split NamespaceError and EncodingError from Error.
  • #811: Renamed Error::EscapeError to Error::Escape to match other variants.
  • #811: Narrow down error return type from Error where only one variant is ever returned: attribute related methods on BytesStart and BytesDecl returns AttrError.
  • #820: Classify output of the Serializer by returning an enumeration with kind of written data.
  • #823: Do not allow serialization of consequent primitives, for example Vec<usize> or Vec<String> in $value fields. They cannot be deserialized back with the same result.
  • #827: Make escape and it variants take a impl Into<Cow<str>> argument and implement From<(&'a str, Cow<'a, str>)> on Attribute.
  • #826: Removed DeError::InvalidInt, DeError::InvalidFloat and DeError::InvalidBoolean. Now the responsibility for returning the error lies with the visitor of the type. See rationale in serde-rs/serde#2811

New Contributors

Full Changelog: v0.36.2...v0.37.0