Trait fourleaf::de::Deserialize
[−]
[src]
pub trait Deserialize<R: Read, STYLE = Copying>: Sized { type Accum: Default + Sized; fn deserialize_field(
accum: &mut Self::Accum,
context: &Context,
field: &mut Field<R>
) -> Result<()>; fn finish(accum: Self::Accum, context: &Context) -> Result<Self>; fn deserialize_body(
context: &Context,
stream: &mut Stream<R>
) -> Result<Self> { ... } fn deserialize_element(
context: &Context,
field: &mut Field<R>
) -> Result<Self> { ... } fn serialized_as_slice() -> bool { ... } fn deserialize_vec(
context: &Context,
field: &mut Field<R>
) -> Option<Result<Vec<Self>>> { ... } fn deserialize_slice(
dst: &mut [Self],
context: &Context,
field: &mut Field<R>
) -> Option<Result<()>> { ... } fn deserialize_array_0(
context: &Context,
field: &mut Field<R>
) -> Option<Result<[Self; 0]>> { ... } }
Trait for high-level deserialisation.
The STYLE
type parameter (which is supposed to be a marker struct from
the style
submodule) is used to select between buffering and referencing
the input.
Unlike Sererialize
, the reader type is parameterised on the trait itself,
since ZeroCopy
for certain types requires additional capabilities on R
.
Associated Types
type Accum: Default + Sized
Type used to accumulate the deserialised value of this field.
Single-valued fields usually use Option<Self>
here.
Parent deserialisers default-initialise accumulators for their fields before starting deserialisation.
Required Methods
fn deserialize_field(
accum: &mut Self::Accum,
context: &Context,
field: &mut Field<R>
) -> Result<()>
accum: &mut Self::Accum,
context: &Context,
field: &mut Field<R>
) -> Result<()>
Deserialises this type from a field in a container.
This may be called any number of times with the same accumulator to account for the field occurring more than once.
fn finish(accum: Self::Accum, context: &Context) -> Result<Self>
Convert an accumulated value to a value of this type.
May fail if the appropriate number of items have not been accumulated, etc.
Provided Methods
fn deserialize_body(context: &Context, stream: &mut Stream<R>) -> Result<Self>
Deserialises this type from a top-level stream or from the tail portion
of a struct. If this call succeeds, all field elements up to and
including the closing EndOfStruct
element are consumed.
The default inverts the default implementation of
Serialize::serialize_body
.
fn deserialize_element(context: &Context, field: &mut Field<R>) -> Result<Self>
Deserialises this type from a single field entry, which is known to be the only occurrence that would constitute this value.
The default implementation default-initialises an Accum
, calls
deserialize_field
, and then finish
.
fn serialized_as_slice() -> bool
Returns whether deserialize_vec
and the deserialize_array_*
methods
return non-None.
fn deserialize_vec(
context: &Context,
field: &mut Field<R>
) -> Option<Result<Vec<Self>>>
context: &Context,
field: &mut Field<R>
) -> Option<Result<Vec<Self>>>
If this type's Serialize
implementation has special behaviour in
serialize_slice
, perform the reverse operation here and return a
Vec
of values.
Note
If this method is implemented, all 32 of the deserialize_array_*
functions as well as deserialize_slice
must also be implemented.
fn deserialize_slice(
dst: &mut [Self],
context: &Context,
field: &mut Field<R>
) -> Option<Result<()>>
dst: &mut [Self],
context: &Context,
field: &mut Field<R>
) -> Option<Result<()>>
If this type's Serialize
implementation has special behaviour in
serialize_slice
, perform the reverse operation here and write into
the given slice of values, or return Err
if the slice is not the
appropriate length.
Note
If this method is implemented, all 32 of the deserialize_array_*
functions as well as deserialize_vec
must also be implemented.
fn deserialize_array_0(
context: &Context,
field: &mut Field<R>
) -> Option<Result<[Self; 0]>>
context: &Context,
field: &mut Field<R>
) -> Option<Result<[Self; 0]>>
If this type's Serialize
implementation has special behaviour in
serialize_slice
, perform the reverse operation here return an array
of the given length, or return an error if the actual number of
values is different from the length of the array.
Note
There are actually 33 of these functions with the same signature except for the suffix (0..32) and the length of the result, but the others are not shown in the documentation for the sake of conciseness. If any are implemented, all must be implemented.
Implementors
impl<T: ?Sized, R: Read, STYLE> Deserialize<R, STYLE> for PhantomData<T>
impl<'a, R: Read + AsExtBytes<'a>> Deserialize<R, ZeroCopy> for &'a [u8]
impl<'a, R: Read + AsExtBytes<'a>> Deserialize<R, ZeroCopy> for &'a str
impl<R: Read, STYLE> Deserialize<R, STYLE> for String
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for Box<T>
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for Rc<T>
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for Arc<T>
impl<'a, R: Read, T: ?Sized + ToOwned> Deserialize<R, Copying> for Cow<'a, T> where
T::Owned: Deserialize<R, Copying>,impl<'a, R: Read, T: ?Sized + ToOwned> Deserialize<R, ZeroCopy> for Cow<'a, T> where
&'a T: Deserialize<R, ZeroCopy>,impl<R: Read, STYLE> Deserialize<R, STYLE> for u8
impl<R: Read, STYLE> Deserialize<R, STYLE> for bool
impl<R: Read, STYLE> Deserialize<R, STYLE> for i8
impl<R: Read, STYLE> Deserialize<R, STYLE> for u16
impl<R: Read, STYLE> Deserialize<R, STYLE> for i16
impl<R: Read, STYLE> Deserialize<R, STYLE> for u32
impl<R: Read, STYLE> Deserialize<R, STYLE> for i32
impl<R: Read, STYLE> Deserialize<R, STYLE> for u64
impl<R: Read, STYLE> Deserialize<R, STYLE> for i64
impl<R: Read, STYLE> Deserialize<R, STYLE> for usize
impl<R: Read, STYLE> Deserialize<R, STYLE> for isize
impl<R: Read, STYLE> Deserialize<R, STYLE> for char
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 0]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 1]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 2]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 3]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 4]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 5]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 6]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 7]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 8]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 9]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 10]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 11]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 12]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 13]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 14]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 15]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 16]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 17]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 18]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 19]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 20]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 21]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 22]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 23]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 24]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 25]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 26]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 27]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 28]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 29]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 30]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 31]
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 32]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 64]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 128]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 256]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 512]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 1024]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 2048]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 4096]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 8192]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 16384]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 32768]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 65536]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 131072]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 262144]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 524288]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 1048576]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 2097152]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 4194304]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 8388608]
impl<R: Read, STYLE, T: Copy + Default + Deserialize<R, STYLE>> Deserialize<R, STYLE> for [T; 16777216]
impl<R: Read, STYLE> Deserialize<R, STYLE> for ()
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0,)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>, F9: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>, F9: Deserialize<R, STYLE>, F10: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>, F9: Deserialize<R, STYLE>, F10: Deserialize<R, STYLE>, F11: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>, F9: Deserialize<R, STYLE>, F10: Deserialize<R, STYLE>, F11: Deserialize<R, STYLE>, F12: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>, F9: Deserialize<R, STYLE>, F10: Deserialize<R, STYLE>, F11: Deserialize<R, STYLE>, F12: Deserialize<R, STYLE>, F13: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>, F9: Deserialize<R, STYLE>, F10: Deserialize<R, STYLE>, F11: Deserialize<R, STYLE>, F12: Deserialize<R, STYLE>, F13: Deserialize<R, STYLE>, F14: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14)
impl<R: Read, STYLE, F0: Deserialize<R, STYLE>, F1: Deserialize<R, STYLE>, F2: Deserialize<R, STYLE>, F3: Deserialize<R, STYLE>, F4: Deserialize<R, STYLE>, F5: Deserialize<R, STYLE>, F6: Deserialize<R, STYLE>, F7: Deserialize<R, STYLE>, F8: Deserialize<R, STYLE>, F9: Deserialize<R, STYLE>, F10: Deserialize<R, STYLE>, F11: Deserialize<R, STYLE>, F12: Deserialize<R, STYLE>, F13: Deserialize<R, STYLE>, F14: Deserialize<R, STYLE>, F15: Deserialize<R, STYLE>> Deserialize<R, STYLE> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15)
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for Vec<T>
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for LinkedList<T>
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for VecDeque<T>
impl<R: Read, STYLE, T: Deserialize<R, STYLE> + Ord> Deserialize<R, STYLE> for BTreeSet<T>
impl<R: Read, STYLE, T: Deserialize<R, STYLE> + Hash + Eq, H: BuildHasher + Default> Deserialize<R, STYLE> for HashSet<T, H>
impl<R: Read, STYLE, T: Deserialize<R, STYLE> + Ord> Deserialize<R, STYLE> for BinaryHeap<T>
impl<R: Read, STYLE, T: Deserialize<R, STYLE>> Deserialize<R, STYLE> for Option<T>
impl<R: Read, STYLE, K: Deserialize<R, STYLE> + Hash + Eq, V: Deserialize<R, STYLE>, H: BuildHasher + Default> Deserialize<R, STYLE> for HashMap<K, V, H>
impl<R: Read, STYLE, K: Deserialize<R, STYLE> + Ord, V: Deserialize<R, STYLE>> Deserialize<R, STYLE> for BTreeMap<K, V>
impl<'a, R: Read, STYLE> Deserialize<R, STYLE> for UnknownFields<'a> where
Cow<'a, [u8]>: Deserialize<R, STYLE>,impl<'a, R: Read, STYLE> Deserialize<R, STYLE> for UnknownField<'a> where
Cow<'a, [u8]>: Deserialize<R, STYLE>,impl<T, R: Read, STYLE> Deserialize<R, STYLE> for Copied<T> where
T: Deserialize<R, Copying>,impl<R: Read, STYLE> Deserialize<R, STYLE> for Ipv4Addr
impl<R: Read, STYLE> Deserialize<R, STYLE> for Ipv6Addr
impl<R: Read, STYLE> Deserialize<R, STYLE> for IpAddr
impl<R: Read, STYLE> Deserialize<R, STYLE> for Duration
impl<R: Read, STYLE> Deserialize<R, STYLE> for SocketAddrV4
impl<R: Read, STYLE> Deserialize<R, STYLE> for SocketAddrV6
impl<R: Read, STYLE> Deserialize<R, STYLE> for SocketAddr
impl<R: Read, STYLE, T: Deserialize<R, STYLE>, E: Deserialize<R, STYLE>> Deserialize<R, STYLE> for Result<T, E>