Function safe_transmute::to_bytes::transmute_to_bytes_mut

source ·
pub fn transmute_to_bytes_mut<S: TriviallyTransmutable>(
    from: &mut [S]
) -> &mut [u8] 
Expand description

Transmute a mutable slice of a trivially transmutable type into a mutable slice of its bytes.

§Examples

#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
struct Gene {
    x1: u8,
    x2: u8,
}
unsafe impl TriviallyTransmutable for Gene {}

let mut genes = [Gene {
                     x1: 0x42,
                     x2: 0x69,
                 },
                 Gene {
                     x1: 0x12,
                     x2: 0x48,
                 }];

{
    let gene_data = transmute_to_bytes_mut(&mut genes);
    assert_eq!(gene_data, &mut [0x42, 0x69, 0x12, 0x48]);

    gene_data[0] = 0xB0;
    gene_data[3] = 0x0B;
}

assert_eq!(genes, [Gene {
                       x1: 0xB0,
                       x2: 0x69,
                   },
                   Gene {
                       x1: 0x12,
                       x2: 0x0B,
                   }]);