pub trait Query<'a> {
type QueryType;
type Key: ReadAt<'a>;
// Required methods
fn query(&self, query: Self::QueryType) -> BitMask;
fn query_by_key(
&self,
val: <Self::Key as ReadAt<'a>>::ReadOutput,
) -> Option<usize>;
fn query_by_keys(
&self,
vals: &[<Self::Key as ReadAt<'a>>::ReadOutput],
) -> BitMask;
}