1use binrw::{binread, BinRead};
2use std::ops::Deref;
3
4#[binread]
5#[derive(Debug)]
6pub struct Chunk<D>
7where
8 for<'a> D: BinRead<Args<'a> = (u32,)>,
9{
10 pub length: u32,
11 #[br(pad_size_to = length, align_after = 2, args(length))]
12 pub data: D,
13}
14
15impl<D> Deref for Chunk<D>
16where
17 for<'a> D: BinRead<Args<'a> = (u32,)>,
18{
19 type Target = D;
20
21 fn deref(&self) -> &Self::Target {
22 &self.data
23 }
24}
25
26#[binread]
27#[derive(Debug)]
28pub struct SubChunk<D>
29where
30 for<'a> D: BinRead<Args<'a> = (u32,)>,
31{
32 pub length: u16,
33 #[br(pad_size_to = length, align_after = 2, args(length as u32))]
34 pub data: D,
35}
36
37impl<D> Deref for SubChunk<D>
38where
39 for<'a> D: BinRead<Args<'a> = (u32,)>,
40{
41 type Target = D;
42
43 fn deref(&self) -> &Self::Target {
44 &self.data
45 }
46}