Skip to content

Releases: jonasbb/serde_with

serde_with v1.12.1

07 Apr 11:41
v1.12.1
c46454c
Compare
Choose a tag to compare

Fixed

  • Depend on a newer serde_with_macros version to pull in some fixes.
    • Account for generics when deriving implementations with SerializeDisplay and DeserializeFromStr #413
    • Provide better error messages when parsing types fails #423

serde_with_macros v1.5.2

07 Apr 11:39
macros-v1.5.2
c46454c
Compare
Choose a tag to compare

Fixed

  • Account for generics when deriving implementations with SerializeDisplay and DeserializeFromStr #413
  • Provide better error messages when parsing types fails #423

serde_with v1.12.0

07 Feb 20:56
v1.12.0
c320450
Compare
Choose a tag to compare

Added

  • Deserialize a Vec and skip all elements failing to deserialize #383

    VecSkipError acts like a Vec, but elements which fail to deserialize, like the "Yellow" are ignored.

    #[derive(serde::Deserialize)]
    enum Color {
        Red,
        Green,
        Blue,
    }
    // JSON
    "colors": ["Blue", "Yellow", "Green"],
    // Rust
    #[serde_as(as = "VecSkipError<_>")]
    colors: Vec<Color>,
    // => vec![Blue, Green]

    Thanks to @hdhoang for creating the PR.

  • Transform between maps and Vec<Enum> #375

    The new EnumMap type converts Vec of enums into a single map.
    The key is the enum variant name, and the value is the variant value.

    // Rust
    VecEnumValues(vec![
        EnumValue::Int(123),
        EnumValue::String("Foo".to_string()),
        EnumValue::Unit,
        EnumValue::Tuple(1, "Bar".to_string()),
        EnumValue::Struct {
            a: 666,
            b: "Baz".to_string(),
        },
    ]
    
    // JSON
    {
      "Int": 123,
      "String": "Foo",
      "Unit": null,
      "Tuple": [
        1,
        "Bar",
      ],
      "Struct": {
        "a": 666,
        "b": "Baz",
      }
    }

Changed

  • The Timestamp*Seconds and Timestamp*SecondsWithFrac types can now be used with chrono::NaiveDateTime. #389

serde_with v1.11.0

18 Oct 20:07
0243453
Compare
Choose a tag to compare

Added

  • Serialize bytes as base64 encoded strings.
    The character set and padding behavior can be configured.

    // Rust
    #[serde_as(as = "serde_with::base64::Base64")]
    value: Vec<u8>,
    #[serde_as(as = "Base64<Bcrypt, Unpadded>")]
    bcrypt_unpadded: Vec<u8>,
    
    // JSON
    "value": "SGVsbG8gV29ybGQ=",
    "bcrypt_unpadded": "QETqZE6eT07wZEO",
  • The minimal supported Rust version (MSRV) is now specified in the Cargo.toml via the rust-version field. The field is supported in Rust 1.56 and has no effect on versions before.

    More details: https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-rust-version-field

Fixed

  • Fixed RUSTSEC-2020-0071 in the time v0.1 dependency, but changing the feature flags of the chrono dependency. This should not change anything. Crates requiring the oldtime feature of chrono can enable it separately.

serde_with_macros v1.5.1

18 Oct 20:07
0243453
Compare
Choose a tag to compare

Added

serde_with v1.10.0

04 Sep 20:30
4087080
Compare
Choose a tag to compare

Added

  • Add BorrowCow which instructs serde to borrow data during deserialization of Cow<'_, str>, Cow<'_, [u8]>, or Cow<'_, [u8; N]>. (#347)
    The implementation is for serde#2072 and serde#2016, about #[serde(borrow)] not working for Option<Cow<'a, str>>.

    #[serde_as]
    #[derive(Deserialize, Serialize)]
    struct Data<'a> {
        #[serde_as(as = "Option<[BorrowCow; 1]>")]
        nested: Option<[Cow<'a, str>; 1]>,
    }

    The #[serde(borrow)] annotation is automatically added by the #[serde_as] attribute.

Changed

  • Bump MSRV to 1.46, since the dev-dependency bitflags requires that version now.
  • flattened_maybe! no longer requires the serde_with crate to be available with a specific name.
    This allows renaming the crate or using flattened_maybe! through a re-export without any complications.

serde_with_macros v1.5.0

04 Sep 20:28
4087080
Compare
Choose a tag to compare

Added

  • Add the attribute #[serde(borrow)] on a field if serde_as is used in combination with the BorrowCow type.

serde_with v1.9.4

18 Jun 16:46
7dca3d2
Compare
Choose a tag to compare

Fixed

  • with_prefix! now supports an optional visibility modifier. (#327, #328)
    If not specified pub(self) is assumed.

    with_prefix!(prefix_active "active_");                   // => mod {...}
    with_prefix!(pub prefix_active "active_");               // => pub mod {...}
    with_prefix!(pub(crate) prefix_active "active_");        // => pub(crate) mod {...}
    with_prefix!(pub(in other_mod) prefix_active "active_"); // => pub(in other_mod) mod {...}

    Thanks to @elpiel for raising and fixing the issue.

serde_with v1.9.3

14 Jun 20:04
42225c4
Compare
Choose a tag to compare

Added

  • The Bytes type now supports borrowed and Cow arrays of fixed size (requires Rust 1.51+)

    #[serde_as(as = "Bytes")]
    #[serde(borrow)]
    borrowed_array: &'a [u8; 15],
    #[serde_as(as = "Bytes")]
    #[serde(borrow)]
    cow_array: Cow<'a, [u8; 15]>,

    Note: For borrowed arrays the used Deserializer needs to support Serde's 0-copy deserialization.

serde_with v1.9.2

07 Jun 19:23
115de87
Compare
Choose a tag to compare

Fixed

  • Suppress clippy warnings, which can occur while using serde_conv (#320)
    Thanks to @mkroening for reporting and fixing the issue.