SYMBOL INDEX (148 symbols across 10 files) FILE: build.rs function main (line 4) | fn main() -> Result<(), Box> { FILE: src/cores/database.rs constant TMP_DIR (line 6) | const TMP_DIR: &str = "tmp"; constant PARAMS_FILE (line 7) | const PARAMS_FILE: &str = "odb_params"; constant STORAGE_FILE (line 8) | const STORAGE_FILE: &str = "odb_storage"; constant INDEX_FILE (line 9) | const INDEX_FILE: &str = "odb_index"; type Parameters (line 18) | pub struct Parameters { type QueryParameters (line 30) | pub struct QueryParameters { type Error (line 45) | type Error = Status; method try_from (line 46) | fn try_from(value: protos::QueryParameters) -> Result Self { type SnapshotStats (line 60) | pub struct SnapshotStats { function from (line 65) | fn from(value: SnapshotStats) -> Self { type Database (line 71) | pub struct Database { method configure (line 79) | pub fn configure(params: &Parameters) { method open (line 111) | pub fn open() -> Result> { method dir (line 128) | fn dir() -> PathBuf { method setup_dir (line 135) | fn setup_dir(&self) -> Result<(), Box> { method load_binary (line 147) | fn load_binary( method persist_as_binary (line 155) | fn persist_as_binary( method create_snapshot (line 174) | pub fn create_snapshot(&self) -> Result> { method validate_dimension (line 189) | fn validate_dimension(&self, vector: &Vector) -> Result<(), Status> { method heartbeat (line 204) | async fn heartbeat( method snapshot (line 215) | async fn snapshot( method insert (line 227) | async fn insert( method get (line 256) | async fn get( method delete (line 270) | async fn delete( method update (line 287) | async fn update( method query (line 306) | async fn query( function test_open (line 354) | fn test_open() { function test_heartbeat (line 360) | async fn test_heartbeat() { function test_insert (line 368) | async fn test_insert() { function setup_db (line 385) | fn setup_db() -> Arc { method default (line 396) | fn default() -> Self { FILE: src/cores/index.rs type ClusterIndex (line 6) | type ClusterIndex = usize; type QueryResult (line 14) | pub struct QueryResult { method eq (line 24) | fn eq(&self, other: &Self) -> bool { method cmp (line 30) | fn cmp(&self, other: &Self) -> Ordering { method partial_cmp (line 37) | fn partial_cmp(&self, other: &Self) -> Option { function from (line 43) | fn from(value: QueryResult) -> Self { type Index (line 65) | pub struct Index { method new (line 80) | pub fn new() -> Self { method with_metric (line 90) | pub fn with_metric(mut self, metric: Metric) -> Self { method with_density (line 96) | pub fn with_density(mut self, density: usize) -> Self { method insert (line 106) | pub fn insert( method delete (line 142) | pub fn delete(&mut self, id: &RecordID) -> Result<(), Status> { method query (line 168) | pub fn query( method insert_centroid (line 218) | fn insert_centroid(&mut self, vector: &Vector) -> ClusterIndex { method update_centroid (line 230) | fn update_centroid(&mut self, cluster_id: &ClusterIndex, vector: &Vect... method find_nearest_centroid (line 246) | fn find_nearest_centroid(&self, vector: &Vector) -> Option Vec { method split_cluster (line 282) | fn split_cluster( function test_insert_many (line 316) | fn test_insert_many() { function test_delete (line 335) | fn test_delete() { function test_query (line 369) | fn test_query() { function test_insert_centroid (line 413) | fn test_insert_centroid() { function test_update_centroid (line 428) | fn test_update_centroid() { function test_find_nearest_centroid_empty (line 444) | fn test_find_nearest_centroid_empty() { function test_find_nearest_centroid (line 453) | fn test_find_nearest_centroid() { function test_split_cluster (line 467) | fn test_split_cluster() { function test_sort_nearest_centroids (line 491) | fn test_sort_nearest_centroids() { function setup_index (line 505) | fn setup_index(params: &Parameters) -> Index { FILE: src/cores/storage.rs type Storage (line 10) | pub struct Storage { method new (line 17) | pub fn new() -> Self { method insert (line 22) | pub fn insert( method get (line 33) | pub fn get(&self, id: &RecordID) -> Result<&Record, Status> { method delete (line 44) | pub fn delete(&mut self, id: &RecordID) -> Result<(), Status> { method update (line 55) | pub fn update( method records (line 73) | pub fn records(&self) -> &HashMap { method count (line 78) | pub fn count(&self) -> usize { function test_insert (line 88) | fn test_insert() { function test_delete (line 100) | fn test_delete() { function test_update (line 113) | fn test_update() { FILE: src/main.rs constant SNAPSHOT_INTERVAL (line 16) | const SNAPSHOT_INTERVAL: Duration = Duration::from_secs(600); function main (line 19) | async fn main() { function start (line 38) | fn start() -> Command { function start_handler (line 50) | async fn start_handler(args: &ArgMatches) { function configure (line 72) | fn configure() -> Command { function configure_handler (line 95) | async fn configure_handler(args: &ArgMatches) { FILE: src/types/filter.rs type Filters (line 8) | pub enum Filters { method apply (line 20) | pub fn apply(&self, metadata: &HashMap) -> bool { type Error (line 30) | type Error = Status; method try_from (line 31) | fn try_from(value: &str) -> Result { type Filter (line 68) | pub struct Filter { method apply (line 75) | fn apply(&self, metadata: &HashMap) -> bool { method filter_text (line 89) | fn filter_text(&self, a: impl AsRef, b: impl AsRef) -> bool { method filter_number (line 99) | fn filter_number(&self, a: &f64, b: &f64) -> bool { method filter_boolean (line 111) | fn filter_boolean(&self, a: &bool, b: &bool) -> bool { type Error (line 121) | type Error = Status; method try_from (line 122) | fn try_from(value: &str) -> Result { type Operator (line 144) | pub enum Operator { type Error (line 155) | type Error = Status; method try_from (line 156) | fn try_from(value: &str) -> Result { function test_filters_from_string (line 181) | fn test_filters_from_string() { function test_filters_apply (line 212) | fn test_filters_apply() -> Result<(), Box> { function setup_metadata (line 233) | fn setup_metadata() -> HashMap { FILE: src/types/metric.rs constant EUCLIDEAN (line 5) | const EUCLIDEAN: &str = "euclidean"; constant COSINE (line 6) | const COSINE: &str = "cosine"; type Metric (line 19) | pub enum Metric { method distance (line 26) | pub fn distance(&self, a: &Vector, b: &Vector) -> Option { method as_str (line 35) | pub fn as_str(&self) -> &str { method from (line 44) | fn from(value: &str) -> Self { method from (line 55) | fn from(value: String) -> Self { function test_distance (line 65) | fn test_distance() { FILE: src/types/record.rs type RecordID (line 13) | pub struct RecordID(Uuid); method new (line 17) | pub fn new() -> Self { method fmt (line 23) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type Err (line 29) | type Err = Status; method from_str (line 30) | fn from_str(s: &str) -> Result { type Value (line 43) | pub enum Value { method from (line 50) | fn from(value: String) -> Self { method from (line 56) | fn from(value: &str) -> Self { type Error (line 93) | type Error = Status; method try_from (line 94) | fn try_from(value: protos::Value) -> Result { method random (line 156) | pub fn random() -> Self { function from (line 80) | fn from(value: Value) -> Self { type Record (line 111) | pub struct Record { type Error (line 130) | type Error = Status; method try_from (line 131) | fn try_from(value: protos::Record) -> Result { method random (line 162) | pub fn random(dimension: usize) -> Self { function from (line 117) | fn from(value: Record) -> Self { FILE: src/types/vector.rs type Vector (line 9) | pub struct Vector(Box<[f32]>); method as_slice (line 13) | pub fn as_slice(&self) -> &[f32] { method to_vec (line 18) | pub fn to_vec(&self) -> Vec { method len (line 23) | pub fn len(&self) -> usize { method from (line 31) | fn from(value: Vec) -> Self { type Error (line 43) | type Error = Status; method try_from (line 44) | fn try_from(value: protos::Vector) -> Result { method random (line 61) | pub fn random(dimension: usize) -> Self { function from (line 37) | fn from(value: Vector) -> Self { function test_random_vector (line 54) | fn test_random_vector() { FILE: src/utils/kmeans.rs type ClusterIndex (line 7) | type ClusterIndex = usize; type Vectors (line 13) | type Vectors<'v> = Rc<[&'v Vector]>; type KMeans (line 21) | pub struct KMeans { method new (line 37) | pub fn new(n_clusters: usize) -> Self { method with_metric (line 48) | pub fn with_metric(mut self, metric: Metric) -> Self { method with_max_iter (line 55) | pub fn with_max_iter(mut self, max_iter: usize) -> Self { method fit (line 61) | pub fn fit(&mut self, vectors: Vectors) -> Result<(), Box> { method initialize_centroids (line 93) | fn initialize_centroids(&self, vectors: Vectors) -> Vec { method update_centroids (line 133) | fn update_centroids(&self, vectors: Vectors) -> Vec { method assign_clusters (line 168) | fn assign_clusters(&self, vectors: Vectors) -> Vec { method find_nearest_centroid (line 176) | pub fn find_nearest_centroid(&self, vector: &Vector) -> ClusterIndex { method assignments (line 200) | pub fn assignments(&self) -> &[ClusterIndex] { method centroids (line 205) | pub fn centroids(&self) -> &[Vector] { function test_kmeans_fit_1_to_1 (line 215) | fn test_kmeans_fit_1_to_1() { function test_kmeans_fit_10_to_5 (line 220) | fn test_kmeans_fit_10_to_5() { function test_kmeans_fit_100_to_10 (line 225) | fn test_kmeans_fit_100_to_10() { function evaluate_kmeans (line 229) | fn evaluate_kmeans(n_cluster: usize, vectors: Vec) { function generate_vectors (line 252) | fn generate_vectors(n: usize) -> Vec {