pub mod adr;
pub mod expanded;
pub mod nvdimm;
pub mod standard;
use crate::{Error, Head, Type};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Acpi {
Standard(standard::Standard),
Expanded(expanded::Expanded),
Adr(adr::Adr),
Nvdimm(nvdimm::Nvdimm),
}
impl TryFrom<Head<'_>> for Acpi {
type Error = Error;
fn try_from(head: Head<'_>) -> Result<Self, Self::Error> {
match head.subkind {
0x01 => TryFrom::try_from(head).map(Acpi::Standard),
0x02 => TryFrom::try_from(head).map(Acpi::Expanded),
0x03 => TryFrom::try_from(head).map(Acpi::Adr),
0x04 => TryFrom::try_from(head).map(Acpi::Nvdimm),
n => Err(Error::UnknownSubType(Type::Acpi, n)),
}
}
}