pub struct MaybeSerde<T>(pub Option<T>);Expand description
Helper type for connect serde and maybe-serde
This type implement both serde::{Serialize, Deserialize} for all T
It’s just helper type and not necessary
you could define your own type using MaybeSer and MaybeDe
§When Serialize
if T: Serialize and Option is Some then just serialize T itself (doesn’t serialize as Option!)
and T: !Serialize or Option is None then serialize None
maybe #[serde(skip_serializing_if = "T::IMPL_SERIALIZE")] attribute could be help
§When Deserialize
if T: Deserialize then get Some
and T: !Deserialize just None
Tuple Fields§
§0: Option<T>Trait Implementations§
Source§impl<'de, T: MaybeDe<'de>> Deserialize<'de> for MaybeSerde<T>
impl<'de, T: MaybeDe<'de>> Deserialize<'de> for MaybeSerde<T>
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<T> Into<Option<T>> for MaybeSerde<T>
impl<T> Into<Option<T>> for MaybeSerde<T>
Auto Trait Implementations§
impl<T> Freeze for MaybeSerde<T>where
T: Freeze,
impl<T> RefUnwindSafe for MaybeSerde<T>where
T: RefUnwindSafe,
impl<T> Send for MaybeSerde<T>where
T: Send,
impl<T> Sync for MaybeSerde<T>where
T: Sync,
impl<T> Unpin for MaybeSerde<T>where
T: Unpin,
impl<T> UnwindSafe for MaybeSerde<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<'de, T> MaybeDe<'de> for T
impl<'de, T> MaybeDe<'de> for T
Source§const IMPL_DESERIALIZE: bool = false
const IMPL_DESERIALIZE: bool = false
Always return false
default fn maybe_deserialize<D>(
_deserializer: D,
) -> Option<Result<T, <D as Deserializer<'de>>::Error>>where
D: Deserializer<'de>,
Source§impl<'de, T> MaybeDe<'de> for Twhere
T: Deserialize<'de>,
impl<'de, T> MaybeDe<'de> for Twhere
T: Deserialize<'de>,
Source§const IMPL_DESERIALIZE: bool = true
const IMPL_DESERIALIZE: bool = true
Always return true
fn maybe_deserialize<D>(
deserializer: D,
) -> Option<Result<T, <D as Deserializer<'de>>::Error>>where
D: Deserializer<'de>,
Source§impl<T> MaybeSer for T
impl<T> MaybeSer for T
Source§const IMPL_SERIALIZE: bool = false
const IMPL_SERIALIZE: bool = false
Always return false
default fn maybe_serialize<S>(
&self,
_serializer: S,
) -> Option<Result<<S as Serializer>::Ok, <S as Serializer>::Error>>where
S: Serializer,
Source§impl<T> MaybeSer for Twhere
T: Serialize,
impl<T> MaybeSer for Twhere
T: Serialize,
Source§const IMPL_SERIALIZE: bool = true
const IMPL_SERIALIZE: bool = true
Always return true