pub mod disk;
pub mod format;
mod memory;
pub use memory::MemoryStorage;
use crate::error::Result;
use crate::quantization::QuantizedVector;
use crate::types::{Metadata, StoredVector, VectorId};
pub trait Storage: Send + Sync {
fn insert(
&self,
id: VectorId,
vector: Option<Vec<f32>>,
metadata: Option<Metadata>,
) -> Result<()>;
fn get(&self, id: &str) -> Result<Option<StoredVector>>;
fn delete(&self, id: &str) -> Result<bool>;
fn contains(&self, id: &str) -> bool;
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
fn iter(&self) -> Box<dyn Iterator<Item = StoredVector> + '_>;
fn iter_with_vectors(&self) -> Box<dyn Iterator<Item = StoredVector> + '_>;
fn ids(&self) -> Vec<VectorId>;
fn clear(&self);
fn insert_quantized(
&self,
id: VectorId,
quantized: QuantizedVector,
metadata: Option<Metadata>,
) -> Result<()>;
fn get_quantized(&self, id: &str) -> Result<Option<QuantizedVector>>;
}