use crate::error::Result;
use crate::format::ChildRef;
#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
pub struct JobConfig {
pub compression_id: u8,
pub is_map: bool,
}
pub trait SerializationJob<'a>: Send + Sync {
fn execute(&self, children_refs: &[ChildRef]) -> Result<Vec<u8>>;
fn estimated_size(&self) -> usize;
fn config(&self) -> JobConfig {
JobConfig::default()
}
}
impl<'a> std::fmt::Debug for Box<dyn SerializationJob<'a> + 'a> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"SerializationJob(size={}, algo={})",
self.estimated_size(),
self.config().compression_id
)
}
}