use thiserror::Error;
use crate::pagable::DeserTypeId;
#[derive(Debug, Error)]
pub enum PagableError {
#[error("Type `{type_id}` was not registered for deserialization.")]
TypeNotRegistered {
type_id: DeserTypeId,
},
#[error(
"Corrupted data: {count} values consumed {actual_bytes} bytes but expected {expected_bytes}"
)]
InconsistentArenaSize {
count: usize,
expected_bytes: u32,
actual_bytes: u32,
},
#[error("Heap bases not registered for heap {heap_id:?}")]
HeapBasesNotRegistered {
heap_id: crate::pagable::heap_ref_id::HeapRefId,
},
#[error("Invalid `{enum_name}` variant tag: {tag}")]
InvalidVariantTag {
enum_name: &'static str,
tag: u8,
},
}
impl From<PagableError> for crate::Error {
fn from(e: PagableError) -> Self {
crate::Error::new_kind(crate::ErrorKind::Other(anyhow::Error::new(e)))
}
}