Skip to main content

apache_datasketches/tuple/generic/
input.rs

1use super::{CompactTupleSketch, TupleSketch, TupleSummary};
2use apache_datasketches_sys::tuple_generic_input::TupleGenericInputRef;
3
4mod sealed {
5    use super::TupleSummary;
6    pub trait Sealed {}
7    impl<S: TupleSummary> Sealed for super::TupleSketch<S> {}
8    impl<S: TupleSummary> Sealed for super::CompactTupleSketch<S> {}
9}
10
11/// Either generic Tuple sketch type can be fed into this module's set
12/// operations. Sealed — the shims have concrete overloads for these two types
13/// only.
14pub trait TupleInput<S: TupleSummary>: sealed::Sealed {
15    #[doc(hidden)]
16    fn as_input(&self) -> TupleGenericInputRef<'_>;
17}
18
19impl<S: TupleSummary> TupleInput<S> for TupleSketch<S> {
20    fn as_input(&self) -> TupleGenericInputRef<'_> {
21        TupleGenericInputRef::Sketch(&self.inner)
22    }
23}
24
25impl<S: TupleSummary> TupleInput<S> for CompactTupleSketch<S> {
26    fn as_input(&self) -> TupleGenericInputRef<'_> {
27        TupleGenericInputRef::Compact(&self.inner)
28    }
29}