use super::BinarySource; use super::Embeddable; use super::IOResult; use super::IOValue; use super::Reader; use super::packed::PackedReader; pub trait DomainDecode { fn decode_embedded<'de, 'src, S: BinarySource<'de>>( &mut self, src: &'src mut S, read_annotations: bool, ) -> IOResult; } pub struct IOValueDomainDecode; impl DomainDecode for IOValueDomainDecode { fn decode_embedded<'de, 'src, S: BinarySource<'de>>( &mut self, src: &'src mut S, read_annotations: bool, ) -> IOResult { PackedReader::new(src, IOValueDomainDecode).demand_next(read_annotations) } } pub struct NoEmbeddedDomainDecode; impl DomainDecode for NoEmbeddedDomainDecode { fn decode_embedded<'de, 'src, S: BinarySource<'de>>( &mut self, _src: &'src mut S, _read_annotations: bool, ) -> IOResult { Err(std::io::Error::new(std::io::ErrorKind::Unsupported, "Embedded values not supported here")) } }