polytrack-codes 0.4.0-pre.2

Collection of utilities to work with PolyTrack's track codes
Documentation
#[inline]
pub fn read_u8(buf: &[u8], offset: &mut usize) -> Option<u8> {
    let res = buf.get(*offset).copied();
    *offset += 1;
    res
}
#[inline]
pub fn read_u16(buf: &[u8], offset: &mut usize) -> Option<u16> {
    let res = Some(u16::from_le_bytes(
        buf.get(*offset..*offset + 2)?.try_into().ok()?,
    ));
    *offset += 2;
    res
}
#[inline]
pub fn read_i24(buf: &[u8], offset: &mut usize) -> Option<i32> {
    let res = Some(
        i32::from(*buf.get(*offset)?)
            | (i32::from(*buf.get(*offset + 1)?) << 8)
            | (i32::from(*buf.get(*offset + 2)?) << 16),
    );
    *offset += 3;
    res
}
#[inline]
pub fn read_u32(buf: &[u8], offset: &mut usize) -> Option<u32> {
    let res = Some(u32::from_le_bytes(
        buf.get(*offset..*offset + 4)?.try_into().ok()?,
    ));
    *offset += 4;
    res
}