apache_datasketches/cpc/
union.rs1use crate::cpc::sketch::CpcSketch;
2use crate::error::SketchError;
3use apache_datasketches_sys::cpc_union::ffi as sys;
4use cxx::UniquePtr;
5
6pub struct CpcUnion {
15 inner: UniquePtr<sys::CpcUnionShim>,
16}
17
18unsafe impl Send for CpcUnion {}
19
20impl CpcUnion {
21 pub(crate) fn from_lg_k(lg_k: u8) -> Result<Self, SketchError> {
22 let inner = sys::new_cpc_union(lg_k)
23 .map_err(|e| SketchError::InvalidConfig(e.what().to_string()))?;
24 Ok(Self { inner })
25 }
26
27 pub fn update(&mut self, sketch: &CpcSketch) {
29 self.inner.pin_mut().update_sketch(&sketch.inner);
30 }
31
32 pub fn get_result(&self) -> CpcSketch {
34 let inner = self.inner.get_result();
35 CpcSketch { inner }
36 }
37}