use crate::error::Result;
pub trait CardFormat: Sized {
const MAGIC: [u8; 4];
const VERSION_MAJOR: u8;
const VERSION_MINOR: u8;
fn validate_magic(magic: &[u8; 4]) -> Result<()> {
if magic != &Self::MAGIC {
return Err(crate::CardError::InvalidMagic(*magic));
}
Ok(())
}
fn validate_version(major: u8, minor: u8) -> Result<()> {
if major != Self::VERSION_MAJOR {
return Err(crate::CardError::UnsupportedVersion { major, minor });
}
if minor < Self::VERSION_MINOR {
return Err(crate::CardError::UnsupportedVersion { major, minor });
}
Ok(())
}
fn validate_payload(_payload: &[u8]) -> Result<()> {
Ok(())
}
fn format_name() -> &'static str;
}