pub struct HnswPersistence;Expand description
Provides serialization and file persistence for HNSW index snapshots.
Implementations§
Source§impl HnswPersistence
impl HnswPersistence
Sourcepub fn serialize(&self, meta: &HnswMeta, layers: &[HnswLayer]) -> Vec<u8> ⓘ
pub fn serialize(&self, meta: &HnswMeta, layers: &[HnswLayer]) -> Vec<u8> ⓘ
Serialize meta + layers into a byte vector.
The format is described in the module documentation.
Sourcepub fn deserialize(
&self,
bytes: &[u8],
) -> Result<(HnswMeta, Vec<HnswLayer>), PersistError>
pub fn deserialize( &self, bytes: &[u8], ) -> Result<(HnswMeta, Vec<HnswLayer>), PersistError>
Deserialize bytes into (HnswMeta, Vec<HnswLayer>).
Sourcepub fn save_to_file(
&self,
path: &Path,
meta: &HnswMeta,
layers: &[HnswLayer],
) -> Result<(), PersistError>
pub fn save_to_file( &self, path: &Path, meta: &HnswMeta, layers: &[HnswLayer], ) -> Result<(), PersistError>
Write a snapshot to a file atomically (write → temp, rename).
Sourcepub fn load_from_file(
&self,
path: &Path,
) -> Result<(HnswMeta, Vec<HnswLayer>), PersistError>
pub fn load_from_file( &self, path: &Path, ) -> Result<(HnswMeta, Vec<HnswLayer>), PersistError>
Read a snapshot from a file.
Sourcepub fn validate_checksum(&self, bytes: &[u8]) -> bool
pub fn validate_checksum(&self, bytes: &[u8]) -> bool
Validate the CRC32 checksum of serialized bytes.
Returns true if the checksum field matches the computed checksum
of the payload, false otherwise.
Sourcepub fn merge_snapshots(
&self,
base: &HnswSnapshot,
delta: &HnswSnapshot,
) -> HnswSnapshot
pub fn merge_snapshots( &self, base: &HnswSnapshot, delta: &HnswSnapshot, ) -> HnswSnapshot
Merge a base snapshot with a delta snapshot.
Merge strategy:
metais taken fromdelta(delta always has the newer configuration)- For each layer in delta, its nodes override/supplement the base layer nodes
(keyed by
node.id) - Layers present only in base are preserved; layers only in delta are added
Trait Implementations§
Source§impl Clone for HnswPersistence
impl Clone for HnswPersistence
Source§fn clone(&self) -> HnswPersistence
fn clone(&self) -> HnswPersistence
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HnswPersistence
impl Debug for HnswPersistence
Source§impl Default for HnswPersistence
impl Default for HnswPersistence
Source§fn default() -> HnswPersistence
fn default() -> HnswPersistence
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for HnswPersistence
impl RefUnwindSafe for HnswPersistence
impl Send for HnswPersistence
impl Sync for HnswPersistence
impl Unpin for HnswPersistence
impl UnsafeUnpin for HnswPersistence
impl UnwindSafe for HnswPersistence
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.