pub type Result<T> = core::result::Result<T, Error>;
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error("buffer too short: need {need}, have {have} ({what})")]
BufferTooShort {
need: usize,
have: usize,
what: &'static str,
},
#[error("bad data_identifier: {0:#04X} (expected 0x20)")]
BadDataIdentifier(u8),
#[error("bad sync_byte: {0:#04X} (expected 0x0F)")]
BadSyncByte(u8),
#[error("bad end_of_PES_data_field_marker: {0:#04X} (expected 0xFF)")]
BadEndOfPesMarker(u8),
#[error("unknown segment_type: {0:#04X}")]
UnknownSegmentType(u8),
#[error("unknown data_type: {0:#04X}")]
UnknownDataType(u8),
#[error("unknown object_coding_method: {0:#02X}")]
UnknownObjectCodingMethod(u8),
#[error("non-zero stuffing byte: {0:#04X} (expected 0x00)")]
BadStuffingByte(u8),
#[error("segment too large to serialize: segment_length oversized")]
SegmentTooLarge,
}