Struct serde_with::DisplayFromStr [−][src]
pub struct DisplayFromStr;
De/Serialize using Display
and FromStr
implementation
This allows to deserialize 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
impl Clone for DisplayFromStr
[src]
impl Clone for DisplayFromStr
[src]fn clone(&self) -> DisplayFromStr
[src]
fn clone(&self) -> DisplayFromStr
[src]Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]Performs copy-assignment from source
. Read more
impl Debug for DisplayFromStr
[src]
impl Debug for DisplayFromStr
[src]impl Default for DisplayFromStr
[src]
impl Default for DisplayFromStr
[src]fn default() -> DisplayFromStr
[src]
fn default() -> DisplayFromStr
[src]Returns the “default value” for a type. Read more
impl<'de, T> DeserializeAs<'de, T> for DisplayFromStr where
T: FromStr,
T::Err: Display,
[src]
impl<'de, T> DeserializeAs<'de, T> for DisplayFromStr where
T: FromStr,
T::Err: Display,
[src]fn deserialize_as<D>(deserializer: D) -> Result<T, D::Error> where
D: Deserializer<'de>,
[src]
fn deserialize_as<D>(deserializer: D) -> Result<T, D::Error> where
D: Deserializer<'de>,
[src]Deserialize this value from the given Serde deserializer.
impl<T> SerializeAs<T> for DisplayFromStr where
T: Display,
[src]
impl<T> SerializeAs<T> for DisplayFromStr where
T: Display,
[src]fn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
[src]
fn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
[src]Serialize this value into the given Serde serializer.
impl Copy for DisplayFromStr
[src]
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
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more