[][src]Derive Macro serde_with::SerializeDisplay

#[derive(SerializeDisplay)]
{
    // Attributes available to this derive:
    #[serde_with]
}

Serialize value by using it's Display implementation

This is an alternative way to implement Serialize for types which also implement Display by serializing the type as string. Ensure that the struct/enum also implements Display. If the implementation is missing you will get a error message like

error[E0277]: `Struct` doesn't implement `std::fmt::Display`

Deserialization with FromStr is available with the matching DeserializeFromStr derive.

Attributes

Attributes for the derive can be specified via the #[serde_with(...)] attribute on the struct or enum. Currently, these arguments to the attribute are possible:

Example

This example is not tested
use std::fmt;

#[derive(SerializeDisplay)]
struct A {
    a: u32,
    b: bool,
}

impl fmt::Display for A {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}<>{}", self.a, self.b)
    }
}

let a = A { a: 123, b: false };
assert_eq!(r#""123<>false""#, serde_json::to_string(&a).unwrap());