use crate::decoder::model01::Layer01;
#[cfg(feature = "unstable-v2")]
use crate::decoder::model02::Layer02;
use crate::{DecodeState, Lazy, Parsed};
#[derive(Debug)]
#[non_exhaustive]
pub enum Layer<'a, S: DecodeState = Lazy> {
Tag01(Layer01<'a, S>),
#[cfg(feature = "unstable-v2")]
Tag02(Layer02<'a, S>),
Unknown(Unknown<'a>),
}
pub type ParsedLayer<'a> = Layer<'a, Parsed>;
#[derive(Debug, Clone, Default, PartialEq)]
pub struct Unknown<'a> {
pub(crate) tag: u8,
pub(crate) value: &'a [u8],
}
impl<'a> Unknown<'a> {
#[must_use]
pub fn tag(&self) -> u32 {
u32::from(self.tag)
}
#[must_use]
pub fn data(&self) -> &'a [u8] {
self.value
}
}