Struct serde_with::DisplayFromStr 
source · [−]pub struct DisplayFromStr;Expand description
De/Serialize using Display and FromStr implementation
This allows deserializing a string as a number. It can be very useful for serialization formats like JSON, which do not support integer numbers and have to resort to strings to represent them.
Another use case is types with Display and FromStr implementations, but without serde
support, which can be found in some crates.
If you control the type you want to de/serialize, you can instead use the two derive macros, SerializeDisplay and DeserializeFromStr.
They properly implement the traits Serialize and Deserialize such that user of the type no longer have to use the serde_as system.
The same functionality is also available as serde_with::rust::display_fromstr compatible with serde’s with-annotation.
Examples
#[serde_as]
#[derive(Deserialize, Serialize)]
struct A {
    #[serde_as(as = "DisplayFromStr")]
    mime: mime::Mime,
    #[serde_as(as = "DisplayFromStr")]
    number: u32,
}
let v: A = serde_json::from_value(json!({
    "mime": "text/plain",
    "number": "159",
})).unwrap();
assert_eq!(mime::TEXT_PLAIN, v.mime);
assert_eq!(159, v.number);
let x = A {
    mime: mime::STAR_STAR,
    number: 777,
};
assert_eq!(json!({ "mime": "*/*", "number": "777" }), serde_json::to_value(&x).unwrap());Trait Implementations
sourceimpl Clone for DisplayFromStr
 
impl Clone for DisplayFromStr
sourcefn clone(&self) -> DisplayFromStr
 
fn clone(&self) -> DisplayFromStr
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl Debug for DisplayFromStr
 
impl Debug for DisplayFromStr
sourceimpl Default for DisplayFromStr
 
impl Default for DisplayFromStr
sourcefn default() -> DisplayFromStr
 
fn default() -> DisplayFromStr
Returns the “default value” for a type. Read more
sourceimpl<'de, T> DeserializeAs<'de, T> for DisplayFromStr where
    T: FromStr,
    T::Err: Display, 
 
impl<'de, T> DeserializeAs<'de, T> for DisplayFromStr where
    T: FromStr,
    T::Err: Display, 
sourcefn deserialize_as<D>(deserializer: D) -> Result<T, D::Error> where
    D: Deserializer<'de>, 
 
fn deserialize_as<D>(deserializer: D) -> Result<T, D::Error> where
    D: Deserializer<'de>, 
Deserialize this value from the given Serde deserializer.
sourceimpl<T> SerializeAs<T> for DisplayFromStr where
    T: Display, 
 
impl<T> SerializeAs<T> for DisplayFromStr where
    T: Display, 
sourcefn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
    S: Serializer, 
 
fn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
    S: Serializer, 
Serialize this value into the given Serde serializer.
impl Copy for DisplayFromStr
Auto Trait Implementations
impl RefUnwindSafe for DisplayFromStr
impl Send for DisplayFromStr
impl Sync for DisplayFromStr
impl Unpin for DisplayFromStr
impl UnwindSafe for DisplayFromStr
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
    T: ?Sized, 
 
impl<T> BorrowMut<T> for T where
    T: ?Sized, 
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more