annoy_rs/types/
mod.rs

1pub(crate) mod annoy_index_impl;
2pub(crate) mod node;
3pub(crate) mod utils;
4
5pub mod serving;
6pub use serving::*;
7use std::fmt::{Display, Formatter, Result};
8use std::rc::Rc;
9
10use memmap2::Mmap;
11
12pub struct AnnoyIndexSearchResult {
13    pub count: usize,
14    pub is_distance_included: bool,
15    pub id_list: Vec<u64>,
16    pub distance_list: Vec<f32>,
17}
18
19#[repr(u8)]
20#[derive(PartialEq, Debug, Copy, Clone)]
21pub enum IndexType {
22    Angular = 0,
23    Euclidean = 1,
24    Manhattan = 2,
25    Hamming = 3,
26    Dot = 4,
27}
28
29impl Display for IndexType {
30    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
31        let r = format!("{:?}", self).to_lowercase();
32        f.write_str(&r)
33    }
34}
35
36pub struct AnnoyIndex {
37    pub dimension: usize,
38    pub index_type: IndexType,
39    pub node_size: usize,
40    pub size: usize,
41    pub(crate) max_descendants: i32,
42    pub(crate) offset_before_children: usize,
43    pub(crate) node_header_size: usize,
44    pub(crate) mmap: Rc<Mmap>,
45    pub(crate) roots: Vec<usize>,
46}