pub fn io_read_u32_le<R: io::Read>(mut rdr: R) -> io::Result<u32> {
    let mut buf = [0; 4];
    rdr.read_exact(&mut buf)?;
    Ok(u32::from_le_bytes(buf))
}
Like read_u32_le, but from an io::Read implementation. If io::Read does
not yield at least 4 bytes, then this returns an unexpected EOF error.
src/bytes.rs