w
Size: a a a
w
MB
w
w
MB
MB
w
w
MB
T
T
MB
T
/
A
/
/
#[derive(Debug, Default, PartialEq)]
struct Header;
impl HardcodedPayload for Header {
type Buf = [u8; 8];
const PAYLOAD: Self::Buf = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
}
#[derive(Debug, Io)]
struct Image {
header: Header;
//Todo: chunks
}
fn main() {
dbg!(Image::read(&mut slice).unwrap());
}
/
/
impl Io for Vec<Chunk>
impl Io for Chunk
Header
(тот же impl через специализацию)
#[derive(Debug, Io)]
#[endian(big)]
struct ChunkData { len: u32, ... };
#[derive(Debug, Io)]
#[endian(big)]
#[repr(u32)]
enum Chunk {
IDAT(ChunkData) = u32::from_ne_bytes(*b"IDAT"),
// ...
}
Result<Chunk>
, если чанк нашелся в enum