use super::{
builder::{QueryBuilder, StorageBuilder},
EncryptionError, IndexTerm,
};
pub trait IndexerInit: Sized {
type Args;
type Error;
fn try_init<A>(args: A) -> Result<Self, Self::Error>
where
Self::Args: TryFrom<A, Error = Self::Error>;
}
pub trait Indexes<'k, T>: Sized {
fn index(
&self,
builder: StorageBuilder<'k, T>,
) -> Result<StorageBuilder<'k, T>, EncryptionError>;
}
#[derive(Debug, Clone, Copy)]
pub enum QueryOp {
Default,
SteVecSelector,
SteVecTerm,
}
pub trait IndexesForQuery<T, C>: Sized {
fn query_index(
&self,
builder: QueryBuilder<T, C>,
op: QueryOp,
) -> Result<IndexTerm, EncryptionError>;
}