hora 0.1.1

Hora Search Everywhere
#![allow(dead_code)]

use crate::core::node;

use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct SSGParams<E: node::FloatElement> {
    pub angle: E,
    pub init_k: usize,
    pub index_size: usize,
    pub neighbor_neighbor_size: usize,
    pub root_size: usize,
}

impl<E: node::FloatElement> SSGParams<E> {
    pub fn angle(mut self, new_angle: f32) -> Self {
        self.angle = E::from_f32(new_angle).unwrap();
        self
    }
    pub fn init_k(mut self, new_init_k: usize) -> Self {
        self.init_k = new_init_k;
        self
    }
    pub fn index_size(mut self, new_index_size: usize) -> Self {
        self.index_size = new_index_size;
        self
    }
    pub fn neighbor_neighbor_size(mut self, new_neighbor_neighbor_size: usize) -> Self {
        self.neighbor_neighbor_size = new_neighbor_neighbor_size;
        self
    }
    pub fn root_size(mut self, new_root_size: usize) -> Self {
        self.root_size = new_root_size;
        self
    }
}

impl<E: node::FloatElement> Default for SSGParams<E> {
    fn default() -> Self {
        SSGParams {
            angle: E::from_f32(60.0).unwrap(),
            init_k: 100,
            index_size: 100,
            neighbor_neighbor_size: 100,
            root_size: 100,
        }
    }
}