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}