arrow_digest/
traits.rs

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}