in src/traits.rs [76:113]
fn serialize(&self) -> Vec<u8>
where
Self: std::marker::Sized;
/// Decode some of the input bytes starting from the ```begin``` position as a ```Self``` object,
/// possibly with some bytes at the end left.
///
/// Note that ```bytes``` is the input bytes to be decoded,
/// and ```begin``` is the beginning position of ```bytes```.
/// At the end of the execution,
/// ```begin``` should point to the first byte not decoded.
fn deserialize_as_a_unit(bytes: &[u8], begin: &mut usize) -> Result<Self, DecodingError>
where
Self: std::marker::Sized;
/// Decode the input bytes as a ```Self``` object, using up all bytes.
///
/// The default implementation of this method is to first call ```deserialize_as_a_unit``` with ```begin = 0```.
/// If any error message is returned, return the error message directly.
/// If ```begin != bytes.len()```, which means there are bytes not used for decoding,
/// return [DecodingError::TooManyEncodedBytes](../error/enum.DecodingError.html#variant.TooManyEncodedBytes).
/// Otherwise, return the object of decoding result.
fn deserialize(bytes: &[u8]) -> Result<Self, DecodingError>
where
Self: std::marker::Sized,
{
let mut begin = 0usize;
let res = Self::deserialize_as_a_unit(bytes, &mut begin);
if let Err(e) = res {
return Err(e);
}
// Check if all input bytes are used for decoding.
if begin != bytes.len() {
println!("{}, {}", begin, bytes.len());
return Err(DecodingError::TooManyEncodedBytes);
}
res
}