pub fn deserialize_mut<'de, T>(src: &'de mut [u8]) -> ReadResult<T>where
T: SchemaRead<'de, DefaultConfig, Dst = T>,Expand description
Deserialize a type from the given bytes, with the ability
to form mutable references for types that are ZeroCopy.
This can allow mutating the serialized data in place.
§Examples
§Zero-copy types
#[derive(SchemaWrite, SchemaRead)]
#[repr(C)]
struct Data {
bytes: [u8; 7],
the_answer: u8,
}
let data = Data { bytes: [0; 7], the_answer: 0 };
let mut serialized = wincode::serialize(&data).unwrap();
let data_mut: &mut Data = wincode::deserialize_mut(&mut serialized).unwrap();
data_mut.bytes = *b"wincode";
data_mut.the_answer = 42;
let deserialized: Data = wincode::deserialize(&serialized).unwrap();
assert_eq!(deserialized, Data { bytes: *b"wincode", the_answer: 42 });§Mutable zero-copy members
#[derive(SchemaWrite, SchemaRead)]
struct Data {
bytes: [u8; 7],
the_answer: u8,
}
#[derive(SchemaRead)]
struct DataMut<'a> {
bytes: &'a mut [u8; 7],
the_answer: u8,
}
let data = Data { bytes: [0; 7], the_answer: 42 };
let mut serialized = wincode::serialize(&data).unwrap();
let data_mut: DataMut<'_> = wincode::deserialize_mut(&mut serialized).unwrap();
*data_mut.bytes = *b"wincode";
let deserialized: Data = wincode::deserialize(&serialized).unwrap();
assert_eq!(deserialized, Data { bytes: *b"wincode", the_answer: 42 });