use crate::types::Error;
use bee_common::packable::{Packable, Read, Write};
#[repr(u8)]
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum SnapshotKind {
Full = 0,
Delta = 1,
}
impl Packable for SnapshotKind {
type Error = Error;
fn packed_len(&self) -> usize {
(*self as u8).packed_len()
}
fn pack<W: Write>(&self, writer: &mut W) -> Result<(), Self::Error> {
(*self as u8).pack(writer)?;
Ok(())
}
fn unpack_inner<R: Read + ?Sized, const CHECK: bool>(reader: &mut R) -> Result<Self, Self::Error> {
Ok(match u8::unpack_inner::<R, CHECK>(reader)? {
0 => SnapshotKind::Full,
1 => SnapshotKind::Delta,
k => return Err(Self::Error::InvalidSnapshotKind(k)),
})
}
}