Skip to content

Commit 6f71c04

Browse files
committed
lint and format
1 parent a79acbe commit 6f71c04

File tree

3 files changed

+39
-60
lines changed

3 files changed

+39
-60
lines changed

src/hnsw/core_tests.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@ fn hnsw_test() {
4545
let query = vec![10.0; 4];
4646
let res = index.search_knn(&query, 5).unwrap();
4747
assert_eq!(res.len(), 5);
48-
assert_eq!(res[0].sim.into_inner(), 0.0);
48+
assert!((res[0].sim.into_inner() - 0.0).abs() < f32::EPSILON);
4949
assert_eq!(res[0].name.as_str(), "node10");
50-
assert_eq!(res[1].sim.into_inner(), -4.0);
51-
assert_eq!(res[2].sim.into_inner(), -4.0);
52-
assert_eq!(res[3].sim.into_inner(), -16.0);
53-
assert_eq!(res[4].sim.into_inner(), -16.0);
50+
assert!((res[1].sim.into_inner() - -4.0).abs() < f32::EPSILON);
51+
assert!((res[2].sim.into_inner() - -4.0).abs() < f32::EPSILON);
52+
assert!((res[3].sim.into_inner() - -16.0).abs() < f32::EPSILON);
53+
assert!((res[4].sim.into_inner() - -16.0).abs() < f32::EPSILON);
5454

5555
// delete node
5656
for i in 0..n {

src/hnsw/metrics_tests.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,30 @@ use crate::hnsw::metrics;
44
fn diff_is_zero() {
55
let v1 = vec![1.0; 512];
66
let v2 = vec![1.0; 512];
7-
assert_eq!(metrics::sim_func_avx_euc(&v1, &v2, 512), 0.0);
8-
assert_eq!(metrics::sim_func_euc(&v1, &v2, 512), 0.0);
7+
assert!((metrics::sim_func_avx_euc(&v1, &v2, 512) - 0.0).abs() < f32::EPSILON);
8+
assert!((metrics::sim_func_euc(&v1, &v2, 512) - 0.0).abs() < f32::EPSILON);
99
}
1010

1111
#[test]
1212
fn diff_is_512() {
1313
let v1 = vec![0.0; 512];
1414
let v2 = vec![1.0; 512];
15-
assert_eq!(metrics::sim_func_avx_euc(&v1, &v2, 512), -512.0);
16-
assert_eq!(metrics::sim_func_euc(&v1, &v2, 512), -512.0);
15+
assert!((metrics::sim_func_avx_euc(&v1, &v2, 512) - -512.0).abs() < f32::EPSILON);
16+
assert!((metrics::sim_func_euc(&v1, &v2, 512) - -512.0).abs() < f32::EPSILON);
1717
}
1818

1919
#[test]
2020
fn diff_is_512_2_x512() {
2121
let v1 = vec![0.0; 512];
2222
let v2 = vec![512.0; 512];
23-
assert_eq!(metrics::sim_func_avx_euc(&v1, &v2, 512), -134217728.0);
24-
assert_eq!(metrics::sim_func_euc(&v1, &v2, 512), -134217728.0);
23+
assert!((metrics::sim_func_avx_euc(&v1, &v2, 512) - -134217728.0).abs() < f32::EPSILON);
24+
assert!((metrics::sim_func_euc(&v1, &v2, 512) - -134217728.0).abs() < f32::EPSILON);
2525
}
2626

2727
#[test]
2828
fn diff_non_x32() {
2929
let v1 = vec![0.0; 33];
3030
let v2 = vec![1.0; 33];
3131
// assert_eq!(metrics::sim_func_avx_euc(&v1, &v2, 33), -33.0);
32-
assert_eq!(metrics::sim_func_euc(&v1, &v2, 33), -33.0);
32+
assert!((metrics::sim_func_euc(&v1, &v2, 33) - -33.0).abs() < f32::EPSILON);
3333
}

src/lib.rs

Lines changed: 27 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![allow(clippy::not_unsafe_ptr_arg_deref)]
2+
13
mod hnsw;
24
mod types;
35

@@ -15,12 +17,10 @@ extern crate ordered_float;
1517
extern crate owning_ref;
1618

1719
use hnsw::{Index, Node};
18-
use redis_module::{
19-
Context, RedisError, RedisResult, RedisValue,
20-
};
21-
use redismodule_cmd::{Command, ArgType, Collection, rediscmd_doc};
22-
use std::collections::{HashMap, HashSet};
20+
use redis_module::{Context, RedisError, RedisResult, RedisValue};
21+
use redismodule_cmd::{rediscmd_doc, ArgType, Collection, Command};
2322
use std::collections::hash_map::Entry;
23+
use std::collections::{HashMap, HashSet};
2424
use std::sync::{Arc, RwLock};
2525
use types::*;
2626

@@ -128,13 +128,10 @@ thread_local! {
128128
};
129129
}
130130

131-
132131
fn new_index(ctx: &Context, args: Vec<String>) -> RedisResult {
133132
ctx.auto_memory();
134133

135-
let mut parsed = NEW_INDEX_CMD.with(|cmd| {
136-
cmd.parse_args(args)
137-
})?;
134+
let mut parsed = NEW_INDEX_CMD.with(|cmd| cmd.parse_args(args))?;
138135

139136
let name_suffix = parsed.remove("name").unwrap().as_string()?;
140137
let index_name = format!("{}.{}", PREFIX, name_suffix);
@@ -176,17 +173,15 @@ fn new_index(ctx: &Context, args: Vec<String>) -> RedisResult {
176173
fn get_index(ctx: &Context, args: Vec<String>) -> RedisResult {
177174
ctx.auto_memory();
178175

179-
let mut parsed = GET_INDEX_CMD.with(|cmd| {
180-
cmd.parse_args(args)
181-
})?;
176+
let mut parsed = GET_INDEX_CMD.with(|cmd| cmd.parse_args(args))?;
182177

183178
let name_suffix = parsed.remove("name").unwrap().as_string()?;
184179
let index_name = format!("{}.{}", PREFIX, name_suffix);
185180

186181
let index = load_index(ctx, &index_name)?;
187182
let index = match index.try_read() {
188183
Ok(index) => index,
189-
Err(e) => return Err(e.to_string().into())
184+
Err(e) => return Err(e.to_string().into()),
190185
};
191186

192187
ctx.log_debug(format!("Index: {:?}", index).as_str());
@@ -201,9 +196,7 @@ fn get_index(ctx: &Context, args: Vec<String>) -> RedisResult {
201196
fn delete_index(ctx: &Context, args: Vec<String>) -> RedisResult {
202197
ctx.auto_memory();
203198

204-
let mut parsed = DEL_INDEX_CMD.with(|cmd| {
205-
cmd.parse_args(args)
206-
})?;
199+
let mut parsed = DEL_INDEX_CMD.with(|cmd| cmd.parse_args(args))?;
207200

208201
let name_suffix = parsed.remove("name").unwrap().as_string()?;
209202
let index_name = format!("{}.{}", PREFIX, name_suffix);
@@ -320,11 +313,7 @@ fn make_index(ctx: &Context, ir: &IndexRedis) -> Result<IndexT, RedisError> {
320313
Ok(index)
321314
}
322315

323-
fn update_index(
324-
ctx: &Context,
325-
index_name: &str,
326-
index: &IndexT,
327-
) -> Result<(), RedisError> {
316+
fn update_index(ctx: &Context, index_name: &str, index: &IndexT) -> Result<(), RedisError> {
328317
let key = ctx.open_key_writable(index_name);
329318
match key.get_value::<IndexRedis>(&HNSW_INDEX_REDIS_TYPE)? {
330319
Some(_) => {
@@ -344,9 +333,7 @@ fn update_index(
344333
fn add_node(ctx: &Context, args: Vec<String>) -> RedisResult {
345334
ctx.auto_memory();
346335

347-
let mut parsed = ADD_NODE_CMD.with(|cmd| {
348-
cmd.parse_args(args)
349-
})?;
336+
let mut parsed = ADD_NODE_CMD.with(|cmd| cmd.parse_args(args))?;
350337

351338
let index_suffix = parsed.remove("index").unwrap().as_string()?;
352339
let node_suffix = parsed.remove("node").unwrap().as_string()?;
@@ -360,7 +347,7 @@ fn add_node(ctx: &Context, args: Vec<String>) -> RedisResult {
360347
let index = load_index(ctx, &index_name)?;
361348
let mut index = match index.try_write() {
362349
Ok(index) => index,
363-
Err(e) => return Err(e.to_string().into())
350+
Err(e) => return Err(e.to_string().into()),
364351
};
365352

366353
let up = |name: String, node: Node<f32>| {
@@ -369,7 +356,7 @@ fn add_node(ctx: &Context, args: Vec<String>) -> RedisResult {
369356

370357
ctx.log_debug(format!("Adding node: {} to Index: {}", &node_name, &index_name).as_str());
371358
if let Err(e) = index.add_node(&node_name, &data, up) {
372-
return Err(e.error_string().into())
359+
return Err(e.error_string().into());
373360
}
374361

375362
// write node to redis
@@ -385,9 +372,7 @@ fn add_node(ctx: &Context, args: Vec<String>) -> RedisResult {
385372
fn delete_node(ctx: &Context, args: Vec<String>) -> RedisResult {
386373
ctx.auto_memory();
387374

388-
let mut parsed = DEL_NODE_CMD.with(|cmd| {
389-
cmd.parse_args(args)
390-
})?;
375+
let mut parsed = DEL_NODE_CMD.with(|cmd| cmd.parse_args(args))?;
391376

392377
let index_suffix = parsed.remove("index").unwrap().as_string()?;
393378
let node_suffix = parsed.remove("node").unwrap().as_string()?;
@@ -398,9 +383,9 @@ fn delete_node(ctx: &Context, args: Vec<String>) -> RedisResult {
398383
let index = load_index(ctx, &index_name)?;
399384
let mut index = match index.try_write() {
400385
Ok(index) => index,
401-
Err(e) => return Err(e.to_string().into())
386+
Err(e) => return Err(e.to_string().into()),
402387
};
403-
388+
404389
// TODO return error if node has more than 1 strong_count
405390
let node = index.nodes.get(&node_name).unwrap();
406391
if Arc::strong_count(&node.0) > 1 {
@@ -414,9 +399,9 @@ fn delete_node(ctx: &Context, args: Vec<String>) -> RedisResult {
414399
let up = |name: String, node: Node<f32>| {
415400
write_node(ctx, &name, (&node).into()).unwrap();
416401
};
417-
402+
418403
if let Err(e) = index.delete_node(&node_name, up) {
419-
return Err(e.error_string().into())
404+
return Err(e.error_string().into());
420405
}
421406

422407
ctx.log_debug(format!("del key: {}", &node_name).as_str());
@@ -440,9 +425,7 @@ fn delete_node(ctx: &Context, args: Vec<String>) -> RedisResult {
440425
fn get_node(ctx: &Context, args: Vec<String>) -> RedisResult {
441426
ctx.auto_memory();
442427

443-
let mut parsed = GET_NODE_CMD.with(|cmd| {
444-
cmd.parse_args(args)
445-
})?;
428+
let mut parsed = GET_NODE_CMD.with(|cmd| cmd.parse_args(args))?;
446429

447430
let index_suffix = parsed.remove("index").unwrap().as_string()?;
448431
let node_suffix = parsed.remove("node").unwrap().as_string()?;
@@ -485,9 +468,7 @@ fn write_node<'a>(ctx: &'a Context, key: &str, node: NodeRedis) -> RedisResult {
485468
fn search_knn(ctx: &Context, args: Vec<String>) -> RedisResult {
486469
ctx.auto_memory();
487470

488-
let mut parsed = SEARCH_CMD.with(|cmd| {
489-
cmd.parse_args(args)
490-
})?;
471+
let mut parsed = SEARCH_CMD.with(|cmd| cmd.parse_args(args))?;
491472

492473
let index_suffix = parsed.remove("index").unwrap().as_string()?;
493474
let k = parsed.remove("k").unwrap().as_u64()? as usize;
@@ -498,7 +479,7 @@ fn search_knn(ctx: &Context, args: Vec<String>) -> RedisResult {
498479
let index = load_index(ctx, &index_name)?;
499480
let index = match index.try_read() {
500481
Ok(index) => index,
501-
Err(e) => return Err(e.to_string().into())
482+
Err(e) => return Err(e.to_string().into()),
502483
};
503484

504485
ctx.log_debug(
@@ -511,15 +492,13 @@ fn search_knn(ctx: &Context, args: Vec<String>) -> RedisResult {
511492

512493
match index.search_knn(&data, k) {
513494
Ok(res) => {
514-
{
515-
let mut reply: Vec<RedisValue> = Vec::new();
516-
reply.push(res.len().into());
517-
for r in &res {
518-
let sr: SearchResultRedis = r.into();
519-
reply.push(sr.into());
520-
}
521-
Ok(reply.into())
495+
let mut reply: Vec<RedisValue> = Vec::new();
496+
reply.push(res.len().into());
497+
for r in &res {
498+
let sr: SearchResultRedis = r.into();
499+
reply.push(sr.into());
522500
}
501+
Ok(reply.into())
523502
}
524503
Err(e) => Err(e.error_string().into()),
525504
}

0 commit comments

Comments
 (0)