Function safe_transmute::to_bytes::transmute_to_bytes_unchecked_mut
source · pub unsafe fn transmute_to_bytes_unchecked_mut<S>(from: &mut S) -> &mut [u8] ⓘ
Expand description
Transmute a single mutable instance of an arbitrary type into a mutable slice of its bytes.
§Safety
This function is very ill advised, since it can be exploited to break
invariants of the source type. Any modification that leaves the data
in an inconsistent state with respect to S
results in undefined behavior.
§Examples
An u32
:
unsafe {
// Little-endian
assert_eq!(transmute_to_bytes_unchecked_mut(&mut 0x0123_4567),
&mut [0x67, 0x45, 0x23, 0x01]);
}
An arbitrary type:
#[repr(C)]
#[derive(Debug, Eq, PartialEq)]
struct Gene {
x1: u8,
x2: u8,
}
let mut gene = Gene {
x1: 0x42,
x2: 0x69,
};
unsafe {
let gene_data = transmute_to_bytes_unchecked_mut(&mut gene);
assert_eq!(gene_data, &mut [0x42, 0x69]);
gene_data[0] = 0xB0;
}
assert_eq!(gene, Gene {
x1: 0xB0,
x2: 0x69,
});