Trait smart_config::de::WellKnown
source · pub trait WellKnown: 'static + Sized {
type Deserializer: DeserializeParam<Self>;
const DE: Self::Deserializer;
}
Expand description
Parameter type with well-known deserializer.
Conceptually, this means that the type is known to behave well when deserializing data from a Value
(ordinarily, using serde::Deserialize
).
§Implementations
Basic well-known types include:
These types use Serde
deserializer.
WellKnown
is also implemented for more complex types:
Rust type | Deserializer | Expected JSON |
---|---|---|
Duration | WithUnit | string or object |
ByteSize | WithUnit | string or object |
Option | Optional † | value, or null , or nothing |
Vec , [_; N] , HashSet , BTreeSet | Repeated | array |
HashMap , BTreeMap | RepeatedEntries | object |
† Option
s handling can be customized via WellKnownOption
or CustomKnownOption
traits.
Required Associated Types§
sourcetype Deserializer: DeserializeParam<Self>
type Deserializer: DeserializeParam<Self>
Type of the deserializer used for this type.
Required Associated Constants§
sourceconst DE: Self::Deserializer
const DE: Self::Deserializer
Deserializer instance.
Object Safety§
Implementations on Foreign Types§
source§impl WellKnown for IpAddr
impl WellKnown for IpAddr
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for SocketAddr
impl WellKnown for SocketAddr
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for bool
impl WellKnown for bool
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for f32
impl WellKnown for f32
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for f64
impl WellKnown for f64
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for i8
impl WellKnown for i8
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for i16
impl WellKnown for i16
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for i32
impl WellKnown for i32
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for i64
impl WellKnown for i64
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for i128
impl WellKnown for i128
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for isize
impl WellKnown for isize
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for u8
impl WellKnown for u8
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for u16
impl WellKnown for u16
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for u32
impl WellKnown for u32
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for u64
impl WellKnown for u64
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for u128
impl WellKnown for u128
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for usize
impl WellKnown for usize
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for String
impl WellKnown for String
type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>
const DE: Self::Deserializer = _
source§impl WellKnown for Ipv4Addr
impl WellKnown for Ipv4Addr
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for Ipv6Addr
impl WellKnown for Ipv6Addr
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for SocketAddrV4
impl WellKnown for SocketAddrV4
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for SocketAddrV6
impl WellKnown for SocketAddrV6
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for Duration
impl WellKnown for Duration
type Deserializer = WithUnit
const DE: Self::Deserializer = WithUnit
source§impl WellKnown for PathBuf
impl WellKnown for PathBuf
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroI8
impl WellKnown for NonZeroI8
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroI16
impl WellKnown for NonZeroI16
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroI32
impl WellKnown for NonZeroI32
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroI64
impl WellKnown for NonZeroI64
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroIsize
impl WellKnown for NonZeroIsize
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroU8
impl WellKnown for NonZeroU8
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroU16
impl WellKnown for NonZeroU16
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroU32
impl WellKnown for NonZeroU32
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroU64
impl WellKnown for NonZeroU64
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for NonZeroUsize
impl WellKnown for NonZeroUsize
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = _
source§impl WellKnown for H128
Available on crate feature primitive-types
only.
impl WellKnown for H128
primitive-types
only.Accepts a hex string with an optional 0x
prefix.
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = HASH_DE
source§impl WellKnown for H160
Available on crate feature primitive-types
only.
impl WellKnown for H160
primitive-types
only.Accepts a hex string with an optional 0x
prefix.
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = HASH_DE
source§impl WellKnown for H256
Available on crate feature primitive-types
only.
impl WellKnown for H256
primitive-types
only.Accepts a hex string with an optional 0x
prefix.
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = HASH_DE
source§impl WellKnown for H384
Available on crate feature primitive-types
only.
impl WellKnown for H384
primitive-types
only.Accepts a hex string with an optional 0x
prefix.
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = HASH_DE
source§impl WellKnown for H512
Available on crate feature primitive-types
only.
impl WellKnown for H512
primitive-types
only.Accepts a hex string with an optional 0x
prefix.
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = HASH_DE
source§impl WellKnown for H768
Available on crate feature primitive-types
only.
impl WellKnown for H768
primitive-types
only.Accepts a hex string with an optional 0x
prefix.
type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>
const DE: Self::Deserializer = HASH_DE
source§impl WellKnown for U128
Available on crate feature primitive-types
only.
impl WellKnown for U128
primitive-types
only.Accepts a hex string with an mandatory 0x
prefix. This prefix is required to clearly signal hex encoding
so that "34"
doesn’t get mistaken for decimal 34.
type Deserializer = HexUintDeserializer
const DE: Self::Deserializer = HexUintDeserializer
source§impl WellKnown for U256
Available on crate feature primitive-types
only.
impl WellKnown for U256
primitive-types
only.Accepts a hex string with an mandatory 0x
prefix. This prefix is required to clearly signal hex encoding
so that "34"
doesn’t get mistaken for decimal 34.
type Deserializer = HexUintDeserializer
const DE: Self::Deserializer = HexUintDeserializer
source§impl WellKnown for U512
Available on crate feature primitive-types
only.
impl WellKnown for U512
primitive-types
only.Accepts a hex string with an mandatory 0x
prefix. This prefix is required to clearly signal hex encoding
so that "34"
doesn’t get mistaken for decimal 34.