pub mod macros;
pub use macros::*;
pub trait StaticSerialize: rkyv::Archive {}
impl<T> StaticSerialize for T where T: rkyv::Archive {}
pub type StaticResult<T> = Result<T, StaticError>;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum StaticError {
SerializationFailed,
BufferOverflow,
InvalidFormat,
}
impl std::fmt::Display for StaticError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
StaticError::SerializationFailed => write!(f, "Static serialization failed"),
StaticError::BufferOverflow => write!(f, "Buffer overflow during static serialization"),
StaticError::InvalidFormat => write!(f, "Invalid static serialization format"),
}
}
}
impl std::error::Error for StaticError {}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_static_error_display() {
assert_eq!(StaticError::SerializationFailed.to_string(), "Static serialization failed");
assert_eq!(
StaticError::BufferOverflow.to_string(),
"Buffer overflow during static serialization"
);
assert_eq!(StaticError::InvalidFormat.to_string(), "Invalid static serialization format");
}
#[test]
fn test_static_error_equality() {
assert_eq!(StaticError::SerializationFailed, StaticError::SerializationFailed);
assert_ne!(StaticError::SerializationFailed, StaticError::BufferOverflow);
}
}