pub trait DekuContainerRead<'a>: DekuReader<'a, ()> {
// Required methods
fn from_reader<R: Read + Seek>(
input: (&'a mut R, usize),
) -> Result<(usize, Self), DekuError>
where Self: Sized;
fn from_bytes(
input: (&'a [u8], usize),
) -> Result<((&'a [u8], usize), Self), DekuError>
where Self: Sized;
}
Expand description
“Reader” trait: implemented on DekuRead struct and enum containers. A container
is a type which
doesn’t need any context information.
Required Methods§
Sourcefn from_reader<R: Read + Seek>(
input: (&'a mut R, usize),
) -> Result<(usize, Self), DekuError>where
Self: Sized,
fn from_reader<R: Read + Seek>(
input: (&'a mut R, usize),
) -> Result<(usize, Self), DekuError>where
Self: Sized,
Construct type from Reader implementing no_std_io::Read
.
- input - Input given as “Reader” and bit offset
§Returns
(amount of total bits read, Self)
§Example
#[derive(Debug, DekuRead, DekuWrite, PartialEq, Eq, Clone)]
#[deku(endian = "big")]
struct EcHdr {
magic: [u8; 4],
version: u8,
}
let mut file = File::options().read(true).open(“file”).unwrap(); file.seek(SeekFrom::Start(0)).unwrap(); let ec = EcHdr::from_reader((&mut file, 0)).unwrap();