1use arrow::{
2 array::Array,
3 buffer::NullBuffer,
4 datatypes::{DataType, Schema},
5 record_batch::RecordBatch,
6};
7use digest::{Output, OutputSizeUser};
8
9pub trait RecordDigest: OutputSizeUser {
10 fn digest(batch: &RecordBatch) -> Output<Self>;
11 fn new(schema: &Schema) -> Self;
12 fn update(&mut self, batch: &RecordBatch);
13 fn finalize(self) -> Output<Self>;
14}
15
16pub trait ArrayDigest: OutputSizeUser {
17 fn digest(array: &dyn Array) -> Output<Self>;
18 fn new(data_type: &DataType) -> Self;
19 fn update(&mut self, array: &dyn Array, parent_null_bitmap: Option<&NullBuffer>);
20 fn finalize(self) -> Output<Self>;
21}