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:

  • bool
  • String
  • PathBuf
  • Signed and unsigned integers, including non-zero variants
  • f32, f64

These types use Serde deserializer.

WellKnown is also implemented for more complex types:

Rust typeDeserializerExpected JSON
DurationWithUnitstring or object
ByteSizeWithUnitstring or object
OptionOptionalvalue, or null, or nothing
Vec, [_; N], HashSet, BTreeSetRepeatedarray
HashMap, BTreeMapRepeatedEntriesobject

Options handling can be customized via WellKnownOption or CustomKnownOption traits.

Required Associated Types§

source

type Deserializer: DeserializeParam<Self>

Type of the deserializer used for this type.

Required Associated Constants§

source

const DE: Self::Deserializer

Deserializer instance.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl WellKnown for IpAddr

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for SocketAddr

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for bool

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for f32

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for f64

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for i8

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for i16

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for i32

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for i64

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for i128

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for isize

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for u8

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for u16

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for u32

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for u64

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for u128

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for usize

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for String

§

type Deserializer = Serde<{ $crate::_basic_types!($($expecting)+) }>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for Ipv4Addr

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for Ipv6Addr

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for SocketAddrV4

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for SocketAddrV6

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for Duration

§

type Deserializer = WithUnit

source§

const DE: Self::Deserializer = WithUnit

source§

impl WellKnown for PathBuf

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroI8

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroI16

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroI32

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroI64

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroIsize

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroU8

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroU16

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroU32

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroU64

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for NonZeroUsize

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = _

source§

impl WellKnown for H128

Available on crate feature primitive-types only.

Accepts a hex string with an optional 0x prefix.

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = HASH_DE

source§

impl WellKnown for H160

Available on crate feature primitive-types only.

Accepts a hex string with an optional 0x prefix.

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = HASH_DE

source§

impl WellKnown for H256

Available on crate feature primitive-types only.

Accepts a hex string with an optional 0x prefix.

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = HASH_DE

source§

impl WellKnown for H384

Available on crate feature primitive-types only.

Accepts a hex string with an optional 0x prefix.

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = HASH_DE

source§

impl WellKnown for H512

Available on crate feature primitive-types only.

Accepts a hex string with an optional 0x prefix.

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = HASH_DE

source§

impl WellKnown for H768

Available on crate feature primitive-types only.

Accepts a hex string with an optional 0x prefix.

§

type Deserializer = Qualified<Serde<{ $crate::_basic_types!($($expecting)+) }>>

source§

const DE: Self::Deserializer = HASH_DE

source§

impl WellKnown for U128

Available on crate feature 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

source§

const DE: Self::Deserializer = HexUintDeserializer

source§

impl WellKnown for U256

Available on crate feature 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

source§

const DE: Self::Deserializer = HexUintDeserializer

source§

impl WellKnown for U512

Available on crate feature 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

source§

const DE: Self::Deserializer = HexUintDeserializer

source§

impl<K, V> WellKnown for BTreeMap<K, V>
where K: 'static + Eq + Ord + WellKnown, V: 'static + WellKnown,

§

type Deserializer = Entries<K, V>

source§

const DE: Self::Deserializer = _

source§

impl<K, V, S> WellKnown for HashMap<K, V, S>
where K: 'static + Eq + Hash + WellKnown, V: 'static + WellKnown, S: 'static + Default + BuildHasher,

§

type Deserializer = Entries<K, V>

source§

const DE: Self::Deserializer = _

source§

impl<T> WellKnown for BTreeSet<T>
where T: Eq + Ord + WellKnown,

source§

impl<T, S> WellKnown for HashSet<T, S>
where T: Eq + Hash + WellKnown, S: 'static + Default + BuildHasher,

source§

impl<T: CustomKnownOption> WellKnown for Option<T>

source§

impl<T: WellKnown> WellKnown for Vec<T>

source§

impl<T: WellKnown, const N: usize> WellKnown for [T; N]

Implementors§