[][src]Trait serde_hex::SerHexOpt

pub trait SerHexOpt<C>: Sized + SerHex<C> where
    C: HexConf
{ fn serialize<S>(
        option: &Option<Self>,
        serializer: S
    ) -> Result<S::Ok, S::Error>
    where
        S: Serializer
, { ... }
fn deserialize<'de, D>(deserializer: D) -> Result<Option<Self>, D::Error>
    where
        D: Deserializer<'de>
, { ... } }

Variant of SerHex for serializing/deserializing Option types.

Any type T which implements SerHex<C> implements SerHexOpt<C> automatically.

#[derive(Debug,PartialEq,Eq,Serialize,Deserialize)]
struct MaybeNum {
    #[serde(with = "SerHexOpt::<CompactPfx>")]
    num: Option<u64>
}

let s: MaybeNum = serde_json::from_str(r#"{"num":"0xff"}"#).unwrap();
assert_eq!(s,MaybeNum { num: Some(255) });

let n: MaybeNum = serde_json::from_str(r#"{"num":null}"#).unwrap();
assert_eq!(n,MaybeNum { num: None });

Provided methods

fn serialize<S>(option: &Option<Self>, serializer: S) -> Result<S::Ok, S::Error> where
    S: Serializer

Same as SerHex::serialize, except for Option<Self> instead of Self.

fn deserialize<'de, D>(deserializer: D) -> Result<Option<Self>, D::Error> where
    D: Deserializer<'de>, 

Same as SerHex::deserialize, except for Option<Self> instead of Self.

Loading content...

Implementors

impl<T, C> SerHexOpt<C> for T where
    T: Sized + SerHex<C>,
    C: HexConf
[src]

fn serialize<S>(option: &Option<Self>, serializer: S) -> Result<S::Ok, S::Error> where
    S: Serializer
[src]

fn deserialize<'de, D>(deserializer: D) -> Result<Option<Self>, D::Error> where
    D: Deserializer<'de>, 
[src]

Loading content...