h1emu-core 1.2.1

Utility library used in h1emu.
Documentation
pub fn str_from_u8_nul_utf8_checked(utf8_src: &[u8]) -> &str {
    let mut nul_range_end = 1_usize;
    for b in utf8_src {
        if *b == 0 {
            break;
        }
        nul_range_end += 1;
    }
    ::std::str::from_utf8(&utf8_src[0..nul_range_end - 1]).unwrap_or_default()
}

pub fn u8_from_str_nul_utf8_unchecked(data: &str) -> Vec<u8> {
    let mut data_u8 = vec![];

    for b in data.chars() {
        data_u8.push(b as u8);
    }
    data_u8.push(0);
    data_u8
}

pub fn read_prefixed_string_le(buffer: &[u8], offset: usize, length: u32) -> String {
    if offset + 4 > buffer.len() || offset + 4 + length as usize > buffer.len() {
        "Fail to read prefixed string little endiant".to_owned()
    } else {
        let string_bytes = &buffer[offset + 4..offset + 4 + length as usize];

        String::from_utf8(string_bytes.to_vec()).unwrap_or_default()
    }
}
pub fn sat(x: f32) -> f32 {
    if x < 0.0 {
        0.0
    } else if x > 1.0 {
        1.0
    } else {
        x
    }
}