Skip to content

Commit 973f093

Browse files
authored
Merge pull request #79 from meilisearch/fix-lints
Fix lints and update dependencies
2 parents 67e74b8 + b21f732 commit 973f093

File tree

5 files changed

+71
-62
lines changed

5 files changed

+71
-62
lines changed

Cargo.toml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,27 @@ license = "MIT"
1111
edition = "2021"
1212

1313
[dependencies]
14-
bytemuck = { version = "1.14.0", features = ["derive", "extern_crate_alloc"] }
14+
bytemuck = { version = "1.16.1", features = ["derive", "extern_crate_alloc"] }
1515
byteorder = "1.5.0"
16-
heed = { version = "0.20.1", default-features = false }
17-
log = "0.4.20"
18-
memmap2 = "0.9.0"
19-
ordered-float = "4.1.1"
16+
heed = { version = "0.20.2", default-features = false }
17+
log = "0.4.21"
18+
memmap2 = "0.9.4"
19+
ordered-float = "4.2.0"
2020
rand = { version = "0.8.5", features = ["alloc"] }
21-
rayon = "1.8.0"
22-
roaring = "0.10.2"
23-
tempfile = "3.8.1"
24-
thiserror = "1.0.50"
21+
rayon = "1.10.0"
22+
roaring = "0.10.5"
23+
tempfile = "3.10.1"
24+
thiserror = "1.0.61"
2525

2626
[dev-dependencies]
27-
anyhow = "1.0.75"
27+
anyhow = "1.0.86"
2828
arbitrary = { version = "1.3.2", features = ["derive"] }
29-
clap = { version = "4.4.10", features = ["derive"] }
30-
env_logger = "0.10.1"
31-
insta = "1.34.0"
29+
clap = { version = "4.5.7", features = ["derive"] }
30+
env_logger = "0.11.3"
31+
insta = "1.39.0"
3232
instant-distance = "0.6.1"
3333
rand = { version = "0.8.5", features = ["std_rng"] }
34-
tempfile = "3.8.1"
34+
tempfile = "3.10.1"
3535

3636
[features]
3737
default = []

src/node.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ impl UnalignedF32Slice {
5757
/// Creates an unaligned slice of f32 wrapper from a slice of bytes.
5858
pub fn from_bytes(bytes: &[u8]) -> Result<&Self, SizeMismatch> {
5959
if bytes.len() % size_of::<f32>() == 0 {
60+
// safety: `UnalignedF32Slice` is transparent
6061
Ok(unsafe { transmute(bytes) })
6162
} else {
6263
Err(SizeMismatch)

src/parallel.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ impl<'a, DE: BytesEncode<'a>> TmpNodes<DE> {
7979
/// Converts it into a readers to read the nodes.
8080
pub fn into_bytes_reader(self) -> Result<TmpNodesReader> {
8181
let file = self.file.into_inner().map_err(|iie| iie.into_error())?;
82+
// safety: No one should move our files around
8283
let mmap = unsafe { Mmap::map(&file)? };
8384
#[cfg(unix)]
8485
mmap.advise(memmap2::Advice::Sequential)?;
@@ -224,6 +225,10 @@ impl<'t, D: Distance> ImmutableLeafs<'t, D> {
224225
Some(ptr) => *ptr,
225226
None => return Ok(None),
226227
};
228+
229+
// safety:
230+
// - ptr: The pointer comes from LMDB. Since the database cannot be written to, it is still valid.
231+
// - len: All the items share the same dimensions and are the same size
227232
let bytes = unsafe { slice::from_raw_parts(ptr, len) };
228233
NodeCodec::bytes_decode(bytes).map_err(heed::Error::Decoding).map(|node| node.leaf())
229234
}
@@ -326,6 +331,9 @@ impl<'t, D: Distance> ImmutableTrees<'t, D> {
326331
None => return Ok(None),
327332
};
328333

334+
// safety:
335+
// - ptr: The pointer comes from LMDB. Since the database cannot be written to, it is still valid.
336+
// - len: The len cannot change either
329337
let bytes = unsafe { slice::from_raw_parts(ptr, len) };
330338
NodeCodec::bytes_decode(bytes).map_err(heed::Error::Decoding).map(Some)
331339
}

src/tests/reader.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fn open_unfinished_db() {
3434

3535
let rtxn = handle.env.read_txn().unwrap();
3636
let ret = Reader::<Euclidean>::open(&rtxn, 0, handle.database).map(|_| ()).unwrap_err();
37-
insta::assert_display_snapshot!(ret, @"Metadata are missing on index 0, You must build your database before attempting to read it");
37+
insta::assert_snapshot!(ret, @"Metadata are missing on index 0, You must build your database before attempting to read it");
3838
}
3939

4040
#[test]
@@ -50,7 +50,7 @@ fn open_db_with_wrong_dimension() {
5050
let rtxn = handle.env.read_txn().unwrap();
5151
let reader = Reader::<Euclidean>::open(&rtxn, 0, handle.database).unwrap();
5252
let ret = reader.nns_by_vector(&rtxn, &[1.0, 2.0, 3.0], 5, None, None).unwrap_err();
53-
insta::assert_display_snapshot!(ret, @"Invalid vector dimensions. Got 3 but expected 2");
53+
insta::assert_snapshot!(ret, @"Invalid vector dimensions. Got 3 but expected 2");
5454
}
5555

5656
#[test]
@@ -89,7 +89,7 @@ fn search_in_db_with_a_single_vector() {
8989
let reader = Reader::<Angular>::open(&rtxn, 0, handle.database).unwrap();
9090

9191
let ret = reader.nns_by_item(&rtxn, 0, 1, None, None).unwrap();
92-
insta::assert_display_snapshot!(NnsRes(ret), @r###"
92+
insta::assert_snapshot!(NnsRes(ret), @r###"
9393
id(0): distance(0)
9494
"###);
9595
}
@@ -113,14 +113,14 @@ fn two_dimension_on_a_line() {
113113

114114
// if we can't look into enough nodes we find some random points
115115
let ret = reader.nns_by_item(&rtxn, 0, 5, NonZeroUsize::new(1), None).unwrap();
116-
insta::assert_display_snapshot!(NnsRes(ret), @r###"
116+
insta::assert_snapshot!(NnsRes(ret), @r###"
117117
id(48): distance(48)
118118
id(92): distance(92)
119119
"###);
120120

121121
// if we can look into all the node there is no inifinite loop and it works
122122
let ret = reader.nns_by_item(&rtxn, 0, 5, NonZeroUsize::new(usize::MAX), None).unwrap();
123-
insta::assert_display_snapshot!(NnsRes(ret), @r###"
123+
insta::assert_snapshot!(NnsRes(ret), @r###"
124124
id(0): distance(0)
125125
id(1): distance(1)
126126
id(2): distance(2)
@@ -129,7 +129,7 @@ fn two_dimension_on_a_line() {
129129
"###);
130130

131131
let ret = reader.nns_by_item(&rtxn, 0, 5, None, None).unwrap();
132-
insta::assert_display_snapshot!(NnsRes(ret), @r###"
132+
insta::assert_snapshot!(NnsRes(ret), @r###"
133133
id(1): distance(1)
134134
id(2): distance(2)
135135
id(3): distance(3)
@@ -160,7 +160,7 @@ fn two_dimension_on_a_column() {
160160
let reader = Reader::<Euclidean>::open(&rtxn, 0, handle.database).unwrap();
161161
let ret = reader.nns_by_item(&rtxn, 0, 5, None, None).unwrap();
162162

163-
insta::assert_display_snapshot!(NnsRes(ret), @r###"
163+
insta::assert_snapshot!(NnsRes(ret), @r###"
164164
id(1): distance(1)
165165
id(2): distance(2)
166166
id(3): distance(3)
@@ -208,14 +208,14 @@ fn filtering() {
208208
let reader = Reader::<Euclidean>::open(&rtxn, 0, handle.database).unwrap();
209209

210210
let ret = reader.nns_by_item(&rtxn, 0, 5, None, Some(&RoaringBitmap::from_iter(0..2))).unwrap();
211-
insta::assert_display_snapshot!(NnsRes(ret), @r###"
211+
insta::assert_snapshot!(NnsRes(ret), @r###"
212212
id(0): distance(0)
213213
id(1): distance(1)
214214
"###);
215215

216216
let ret =
217217
reader.nns_by_item(&rtxn, 0, 5, None, Some(&RoaringBitmap::from_iter(98..1000))).unwrap();
218-
insta::assert_display_snapshot!(NnsRes(ret), @r###"
218+
insta::assert_snapshot!(NnsRes(ret), @r###"
219219
id(98): distance(98)
220220
id(99): distance(99)
221221
"###);

0 commit comments

Comments
 (0)