#![allow(clippy::doc_markdown)]
#![allow(clippy::cast_precision_loss)]
#![allow(clippy::cast_possible_truncation)]
#![allow(clippy::cast_sign_loss)]
pub(in crate::index::hnsw) mod arena_home;
mod backend_adapter;
mod batch_schedule;
mod distance;
mod graph;
mod graph_io;
pub(crate) mod layer;
mod ordered_float;
mod quantization;
mod quantized_precision;
mod quantized_traversal;
pub(crate) mod rabitq_precision;
mod search;
pub(crate) mod sq8_precision;
pub(crate) use backend_adapter::PARALLEL_BATCH_MIN;
pub use backend_adapter::{NativeHnswBackend, NativeNeighbour};
pub use distance::{CachedSimdDistance, CpuDistance, DistanceEngine};
pub(crate) use graph::ResumableSearch;
pub use graph::{NativeHnsw, DEFAULT_ALPHA, NO_ENTRY_POINT};
#[cfg(feature = "gpu")]
pub(crate) use graph::locking::{holds_lock as hnsw_holds_lock, LockRank as HnswLockRank};
#[cfg(all(test, feature = "gpu"))]
pub(crate) use graph::locking::{
record_lock_acquire as hnsw_record_lock_acquire,
record_lock_release as hnsw_record_lock_release,
};
pub use layer::{Layer, NodeId};
pub use ordered_float::OrderedFloat;
pub use quantization::{QuantizedVector, QuantizedVectorStore, ScalarQuantizer};
pub use quantized_precision::{QuantizedPrecisionHnsw, TraversalCodec};
pub use rabitq_precision::{RaBitQCodec, RaBitQPrecisionConfig, RaBitQPrecisionHnsw};
pub use search::SearchResult;
pub use sq8_precision::{Sq8Codec, Sq8PrecisionConfig, Sq8PrecisionHnsw};
#[cfg(test)]
mod backend_adapter_tests;
#[cfg(test)]
mod batch_connect_tests;
#[cfg(test)]
mod distance_tests;
#[cfg(test)]
mod graph_tests;
#[cfg(test)]
mod layer_tests;
#[cfg(test)]
mod ordered_float_tests;
#[cfg(test)]
mod precision_contract_tests;
#[cfg(test)]
mod quantization_tests;
#[cfg(test)]
mod rabitq_precision_tests;
#[cfg(test)]
mod search_pipeline_tests;
#[cfg(test)]
mod sq8_precision_tests;
#[cfg(test)]
mod tests;