use std::sync::Arc;
use indexmap::IndexMap;
use tinyquant_core::types::VectorId;
pub struct OwnedStore(IndexMap<VectorId, Arc<[f32]>>);
impl OwnedStore {
pub fn new() -> Self {
Self(IndexMap::new())
}
pub fn insert(&mut self, id: VectorId, vec: Arc<[f32]>) {
self.0.insert(id, vec);
}
#[allow(dead_code)]
pub fn get(&self, id: &str) -> Option<&Arc<[f32]>> {
self.0.get(id)
}
pub fn remove(&mut self, id: &str) {
self.0.shift_remove(id);
}
pub fn iter(&self) -> impl Iterator<Item = (&VectorId, &Arc<[f32]>)> {
self.0.iter()
}
pub fn len(&self) -> usize {
self.0.len()
}
pub fn is_empty(&self) -> bool {
self.0.is_empty()
}
#[allow(dead_code)]
pub fn contains_key(&self, id: &str) -> bool {
self.0.contains_key(id)
}
}