1 use core
::marker
::PhantomData
;
3 use de
::{Deserialize, Deserializer, Error, Visitor}
;
5 #[cfg(any(feature = "std", feature = "collections"))]
6 pub use de
::content
::{Content
, ContentRefDeserializer
, ContentDeserializer
, TaggedContentVisitor
,
7 TagOrContentField
, TagOrContentFieldVisitor
, InternallyTaggedUnitVisitor
,
10 /// If the missing field is of type `Option<T>` then treat is as `None`,
11 /// otherwise it is an error.
12 pub fn missing_field
<V
, E
>(field
: &'
static str) -> Result
<V
, E
>
16 struct MissingFieldDeserializer
<E
>(&'
static str, PhantomData
<E
>);
18 impl<E
> Deserializer
for MissingFieldDeserializer
<E
>
23 fn deserialize
<V
>(self, _visitor
: V
) -> Result
<V
::Value
, E
>
26 Err(Error
::missing_field(self.0))
29 fn deserialize_option
<V
>(self, visitor
: V
) -> Result
<V
::Value
, E
>
35 forward_to_deserialize
! {
36 bool
u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string unit seq
37 seq_fixed_size bytes byte_buf map unit_struct newtype_struct
38 tuple_struct
struct struct_field tuple
enum ignored_any
42 let deserializer
= MissingFieldDeserializer(field
, PhantomData
);
43 Deserialize
::deserialize(deserializer
)