fn swap_uuid_to_little_endian()

in libazureinit/src/status.rs [93:119]


fn swap_uuid_to_little_endian(mut bytes: [u8; 16]) -> Uuid {
    let (d1, remainder) = bytes.split_at(std::mem::size_of::<u32>());
    let d1 = d1
        .try_into()
        .map(u32::from_be_bytes)
        .unwrap_or(0)
        .to_ne_bytes();

    let (d2, remainder) = remainder.split_at(std::mem::size_of::<u16>());
    let d2 = d2
        .try_into()
        .map(u16::from_be_bytes)
        .unwrap_or(0)
        .to_ne_bytes();

    let (d3, _) = remainder.split_at(std::mem::size_of::<u16>());
    let d3 = d3
        .try_into()
        .map(u16::from_be_bytes)
        .unwrap_or(0)
        .to_ne_bytes();

    let native_endian = d1.into_iter().chain(d2).chain(d3).collect::<Vec<_>>();
    debug_assert_eq!(native_endian.len(), 8);
    bytes[..native_endian.len()].copy_from_slice(&native_endian);
    uuid::Uuid::from_bytes(bytes)
}