Push on main #121
codeql
on: dynamic
Matrix: analyze
Annotations
46 warnings
|
this lint expectation is unfulfilled:
src/indexer/stamper.rs#L61
warning: this lint expectation is unfulfilled
--> src/indexer/stamper.rs:61:14
|
61 | #[expect(clippy::redundant_clone)]
| ^^^^^^^^^^^^^^^^^^^^^^^
|
|
this lint expectation is unfulfilled:
src/indexer/stamper.rs#L45
warning: this lint expectation is unfulfilled
--> src/indexer/stamper.rs:45:14
|
45 | #[expect(clippy::redundant_clone)]
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unfulfilled_lint_expectations)]` on by default
|
|
hiding a lifetime that's elided elsewhere is confusing:
src/postings/serializer.rs#L74
warning: hiding a lifetime that's elided elsewhere is confusing
--> src/postings/serializer.rs:74:9
|
74 | &mut self,
| ^^^^^^^^^ the lifetime is elided here
...
78 | ) -> io::Result<FieldSerializer> {
| --------------- the same lifetime is hidden here
|
= help: the same lifetime is referred to in inconsistent ways, making the signature confusing
help: use `'_` for type paths
|
78 | ) -> io::Result<FieldSerializer<'_>> {
| ++++
|
|
hiding a lifetime that's elided elsewhere is confusing:
src/indexer/index_writer.rs#L618
warning: hiding a lifetime that's elided elsewhere is confusing
--> src/indexer/index_writer.rs:618:27
|
618 | pub fn prepare_commit(&mut self) -> crate::Result<PreparedCommit<D>> {
| ^^^^^^^^^ ----------------- the same lifetime is hidden here
| |
| the lifetime is elided here
|
= help: the same lifetime is referred to in inconsistent ways, making the signature confusing
= note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
help: use `'_` for type paths
|
618 | pub fn prepare_commit(&mut self) -> crate::Result<PreparedCommit<'_, D>> {
| +++
|
|
this call to `clone` can be replaced with `std::slice::from_ref`:
src/query/term_query/term_query.rs#L102
warning: this call to `clone` can be replaced with `std::slice::from_ref`
--> src/query/term_query/term_query.rs:102:61
|
102 | } => Bm25Weight::for_terms(statistics_provider, &[self.term.clone()])?,
| ^^^^^^^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&self.term)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs
= note: `#[warn(clippy::cloned_ref_to_slice_refs)]` on by default
|
|
this `else { if .. }` block can be collapsed:
src/directory/mmap_directory.rs#L487
warning: this `else { if .. }` block can be collapsed
--> src/directory/mmap_directory.rs:487:16
|
487 | } else {
| ________________^
488 | | if !file.try_lock_exclusive().map_err(|_| LockError::LockBusy)? {
489 | | return Err(LockError::LockBusy);
490 | | }
491 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_else_if
= note: `#[warn(clippy::collapsible_else_if)]` on by default
help: collapse nested if block
|
487 ~ } else if !file.try_lock_exclusive().map_err(|_| LockError::LockBusy)? {
488 + return Err(LockError::LockBusy);
489 + }
|
|
|
large size difference between variants:
src/aggregation/intermediate_agg_result.rs#L249
warning: large size difference between variants
--> src/aggregation/intermediate_agg_result.rs:249:1
|
249 | / pub enum IntermediateAggregationResult {
250 | | /// Bucket variant
251 | | Bucket(IntermediateBucketResult),
| | -------------------------------- the second-largest variant contains at least 56 bytes
252 | | /// Metric variant
253 | | Metric(IntermediateMetricResult),
| | -------------------------------- the largest variant contains at least 368 bytes
254 | | }
| |_^ the entire enum is at least 368 bytes
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
= note: `#[warn(clippy::large_enum_variant)]` on by default
help: consider boxing the large fields to reduce the total size of the enum
|
253 - Metric(IntermediateMetricResult),
253 + Metric(Box<IntermediateMetricResult>),
|
|
|
unused import: `std::iter`:
src/query/boolean_query/block_wand.rs#L305
warning: unused import: `std::iter`
--> src/query/boolean_query/block_wand.rs:305:9
|
305 | use std::iter;
| ^^^^^^^^^
|
|
unused import: `std::iter`:
src/positions/mod.rs#L44
warning: unused import: `std::iter`
--> src/positions/mod.rs:44:9
|
44 | use std::iter;
| ^^^^^^^^^
|
|
unused import: `std::iter`:
src/collector/facet_collector.rs#L487
warning: unused import: `std::iter`
--> src/collector/facet_collector.rs:487:9
|
487 | use std::iter;
| ^^^^^^^^^
|
|
unused import: `std::iter`:
src/tokenizer/ascii_folding_filter.rs#L1564
warning: unused import: `std::iter`
--> src/tokenizer/ascii_folding_filter.rs:1564:9
|
1564 | use std::iter;
| ^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
|
|
manually reimplementing `div_ceil`:
columnar/src/columnar/writer/column_operation.rs#L247
warning: manually reimplementing `div_ceil`
--> columnar/src/columnar/writer/column_operation.rs:247:5
|
247 | (msb + 7) / 8
| ^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `msb.div_ceil(8)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil
|
|
manually reimplementing `div_ceil`:
columnar/src/column_values/u64_based/linear.rs#L120
warning: manually reimplementing `div_ceil`
--> columnar/src/column_values/u64_based/linear.rs:120:19
|
120 | + (num_bits as u64 * stats.num_rows as u64 + 7) / 8,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(num_bits as u64 * stats.num_rows as u64).div_ceil(8)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil
|
|
manually reimplementing `div_ceil`:
columnar/src/column_values/u64_based/bitpacked.rs#L108
warning: manually reimplementing `div_ceil`
--> columnar/src/column_values/u64_based/bitpacked.rs:108:34
|
108 | Some(stats.num_bytes() + (stats.num_rows as u64 * (num_bits_per_value as u64) + 7) / 8)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(stats.num_rows as u64 * (num_bits_per_value as u64)).div_ceil(8)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil
= note: `#[warn(clippy::manual_div_ceil)]` on by default
|
|
this `if` statement can be collapsed:
columnar/src/column_values/u128_based/compact_space/build_compact_space.rs#L205
warning: this `if` statement can be collapsed
--> columnar/src/column_values/u128_based/compact_space/build_compact_space.rs:205:9
|
205 | / if let Some(last_blank_end) = self.blanks.last().map(RangeInclusive::end) {
206 | | if *last_blank_end != u128::MAX {
207 | | covered_space.push(last_blank_end + 1..=u128::MAX);
208 | | }
209 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
help: collapse nested if block
|
205 ~ if let Some(last_blank_end) = self.blanks.last().map(RangeInclusive::end)
206 ~ && *last_blank_end != u128::MAX {
207 | covered_space.push(last_blank_end + 1..=u128::MAX);
208 ~ }
|
|
|
this `if` statement can be collapsed:
columnar/src/column_values/u128_based/compact_space/build_compact_space.rs#L188
warning: this `if` statement can be collapsed
--> columnar/src/column_values/u128_based/compact_space/build_compact_space.rs:188:9
|
188 | / if let Some(first_blank_start) = self.blanks.first().map(RangeInclusive::start) {
189 | | if *first_blank_start != 0 {
190 | | covered_space.push(0..=first_blank_start - 1);
191 | | }
192 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
= note: `#[warn(clippy::collapsible_if)]` on by default
help: collapse nested if block
|
188 ~ if let Some(first_blank_start) = self.blanks.first().map(RangeInclusive::start)
189 ~ && *first_blank_start != 0 {
190 | covered_space.push(0..=first_blank_start - 1);
191 ~ }
|
|
|
this `repeat().take()` can be written more concisely:
columnar/src/column_index/merge/stacked.rs#L110
warning: this `repeat().take()` can be written more concisely
--> columnar/src/column_index/merge/stacked.rs:110:22
|
110 | Box::new(std::iter::repeat(1u32).take(optional_index.num_non_nulls() as usize))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(1u32, optional_index.num_non_nulls() as usize)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n
|
|
this `repeat().take()` can be written more concisely:
columnar/src/column_index/merge/stacked.rs#L108
warning: this `repeat().take()` can be written more concisely
--> columnar/src/column_index/merge/stacked.rs:108:39
|
108 | ColumnIndex::Full => Box::new(std::iter::repeat(1u32).take(num_docs as usize)),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(1u32, num_docs as usize)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n
= note: `#[warn(clippy::manual_repeat_n)]` on by default
|
|
associated items `to_code` and `try_from_code` are never used:
columnar/src/column_index/optional_index/mod.rs#L344
warning: associated items `to_code` and `try_from_code` are never used
--> columnar/src/column_index/optional_index/mod.rs:344:8
|
343 | impl OptionalIndexCodec {
| ----------------------- associated items in this implementation
344 | fn to_code(self) -> u8 {
| ^^^^^^^
...
348 | fn try_from_code(code: u8) -> Result<Self, InvalidData> {
| ^^^^^^^^^^^^^
|
|
enum `OptionalIndexCodec` is never used:
columnar/src/column_index/optional_index/mod.rs#L338
warning: enum `OptionalIndexCodec` is never used
--> columnar/src/column_index/optional_index/mod.rs:338:6
|
338 | enum OptionalIndexCodec {
| ^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
|
|
hiding a lifetime that's elided elsewhere is confusing:
sstable/src/dictionary.rs#L636
warning: hiding a lifetime that's elided elsewhere is confusing
--> sstable/src/dictionary.rs:636:19
|
636 | pub fn stream(&self) -> io::Result<Streamer<TSSTable>> {
| ^^^^^ ------------------ the same lifetime is hidden here
| |
| the lifetime is elided here
|
= help: the same lifetime is referred to in inconsistent ways, making the signature confusing
help: use `'_` for type paths
|
636 | pub fn stream(&self) -> io::Result<Streamer<'_, TSSTable>> {
| +++
|
|
hiding a lifetime that's elided elsewhere is confusing:
sstable/src/dictionary.rs#L617
warning: hiding a lifetime that's elided elsewhere is confusing
--> sstable/src/dictionary.rs:617:41
|
617 | pub fn prefix_range<K: AsRef<[u8]>>(&self, prefix: K) -> StreamerBuilder<TSSTable> {
| ^^^^^ ------------------------- the same lifetime is hidden here
| |
| the lifetime is elided here
|
= help: the same lifetime is referred to in inconsistent ways, making the signature confusing
help: use `'_` for type paths
|
617 | pub fn prefix_range<K: AsRef<[u8]>>(&self, prefix: K) -> StreamerBuilder<'_, TSSTable> {
| +++
|
|
hiding a lifetime that's elided elsewhere is confusing:
sstable/src/dictionary.rs#L612
warning: hiding a lifetime that's elided elsewhere is confusing
--> sstable/src/dictionary.rs:612:18
|
612 | pub fn range(&self) -> StreamerBuilder<TSSTable> {
| ^^^^^ ------------------------- the same lifetime is hidden here
| |
| the lifetime is elided here
|
= help: the same lifetime is referred to in inconsistent ways, making the signature confusing
= note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
help: use `'_` for type paths
|
612 | pub fn range(&self) -> StreamerBuilder<'_, TSSTable> {
| +++
|
|
manually reimplementing `div_ceil`:
sstable/src/sstable_index_v3.rs#L441
warning: manually reimplementing `div_ceil`
--> sstable/src/sstable_index_v3.rs:441:12
|
441 | if (range_end_addr + self.range_start_nbits as usize + 7) / 8 > data.len() {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(range_end_addr + self.range_start_nbits as usize).div_ceil(8)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil
= note: `#[warn(clippy::manual_div_ceil)]` on by default
|
|
this can be `std::io::Error::other(_)`:
sstable/src/sstable_index_v3.rs#L397
warning: this can be `std::io::Error::other(_)`
--> sstable/src/sstable_index_v3.rs:397:47
|
397 | tantivy_fst::Error::Fst(fst_error) => io::Error::new(io::ErrorKind::Other, fst_error),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error
help: use `std::io::Error::other`
|
397 - tantivy_fst::Error::Fst(fst_error) => io::Error::new(io::ErrorKind::Other, fst_error),
397 + tantivy_fst::Error::Fst(fst_error) => io::Error::other(fst_error),
|
|
|
this `if` statement can be collapsed:
sstable/src/merge/heap_merge.rs#L57
warning: this `if` statement can be collapsed
--> sstable/src/merge/heap_merge.rs:57:13
|
57 | / if let Some(mut head) = heap.peek_mut() {
58 | | if head.0.key() == writer.last_inserted_key() {
59 | | value_merger.add(head.0.value());
60 | | if !head.0.advance()? {
... |
65 | | }
| |_____________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
= note: `#[warn(clippy::collapsible_if)]` on by default
help: collapse nested if block
|
57 ~ if let Some(mut head) = heap.peek_mut()
58 ~ && head.0.key() == writer.last_inserted_key() {
59 | value_merger.add(head.0.value());
...
63 | continue;
64 ~ }
|
|
|
this can be `std::io::Error::other(_)`:
sstable/src/dictionary.rs#L311
warning: this can be `std::io::Error::other(_)`
--> sstable/src/dictionary.rs:311:28
|
311 | return Err(io::Error::new(
| ____________________________^
312 | | io::ErrorKind::Other,
313 | | format!("Unsupported sstable version, expected one of [2, 3], found {version}"),
314 | | ));
| |_________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error
= note: `#[warn(clippy::io_other_error)]` on by default
help: use `std::io::Error::other`
|
311 ~ return Err(io::Error::other(
312 ~ format!("Unsupported sstable version, expected one of [2, 3], found {version}"),
|
|
|
hiding a lifetime that's elided elsewhere is confusing:
query-grammar/src/query_grammar.rs#L71
warning: hiding a lifetime that's elided elsewhere is confusing
--> query-grammar/src/query_grammar.rs:71:14
|
71 | fn word(inp: &str) -> IResult<&str, Cow<str>> {
| ^^^^ ---- -------- the same lifetime is hidden here
| | |
| | the same lifetime is elided here
| the lifetime is elided here
|
= help: the same lifetime is referred to in inconsistent ways, making the signature confusing
= note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
help: use `'_` for type paths
|
71 | fn word(inp: &str) -> IResult<&str, Cow<'_, str>> {
| +++
|
|
returning the result of a `let` binding from a block:
query-grammar/src/query_grammar.rs#L316
warning: returning the result of a `let` binding from a block
--> query-grammar/src/query_grammar.rs:316:5
|
308 | / let res = delimited_infallible(
309 | | nothing,
310 | | map(ast_infallible, |(mut ast, errors)| {
311 | | ast.set_default_field(field_name.to_string());
... |
314 | | opt_i_err(char(')'), "expected ')'"),
315 | | )(inp);
| |___________- unnecessary `let` binding
316 | res
| ^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
= note: `#[warn(clippy::let_and_return)]` on by default
help: return the expression directly
|
308 ~
309 ~ delimited_infallible(
310 + nothing,
311 + map(ast_infallible, |(mut ast, errors)| {
312 + ast.set_default_field(field_name.to_string());
313 + (ast, errors)
314 + }),
315 + opt_i_err(char(')'), "expected ')'"),
316 + )(inp)
|
|
|
this `if` statement can be collapsed:
stacker/src/shared_arena_hashmap.rs#L277
warning: this `if` statement can be collapsed
--> stacker/src/shared_arena_hashmap.rs:277:20
|
277 | } else if kv.hash == hash {
| ____________________^
278 | | if let Some(val_addr) =
279 | | self.get_value_addr_if_key_match(key, kv.key_value_addr, memory_arena)
... |
284 | | }
| |_____________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
= note: `#[warn(clippy::collapsible_if)]` on by default
help: collapse nested if block
|
277 ~ } else if kv.hash == hash
278 ~ && let Some(val_addr) =
279 | self.get_value_addr_if_key_match(key, kv.key_value_addr, memory_arena)
...
282 | return Some(v);
283 ~ }
|
|
|
returning the result of a `let` binding from a block:
bitpacker/src/blocked_bitpacker.rs#L146
warning: returning the result of a `let` binding from a block
--> bitpacker/src/blocked_bitpacker.rs:146:9
|
143 | / let iter = (0..bitpacked_elems)
144 | | .map(move |idx| self.get(idx))
145 | | .chain(self.buffer.iter().cloned());
| |________________________________________________- unnecessary `let` binding
146 | iter
| ^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
= note: `#[warn(clippy::let_and_return)]` on by default
help: return the expression directly
|
143 ~
144 ~ (0..bitpacked_elems)
145 + .map(move |idx| self.get(idx))
146 + .chain(self.buffer.iter().cloned())
|
|
|
manually reimplementing `div_ceil`:
bitpacker/src/bitpacker.rs#L141
warning: manually reimplementing `div_ceil`
--> bitpacker/src/bitpacker.rs:141:29
|
141 | let end_byte_read = (end_bit_read + 7) / 8;
| ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `end_bit_read.div_ceil(8)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil
|
|
manually reimplementing `div_ceil`:
bitpacker/src/bitpacker.rs#L51
warning: manually reimplementing `div_ceil`
--> bitpacker/src/bitpacker.rs:51:29
|
51 | let num_bytes = (self.mini_buffer_written + 7) / 8;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `self.mini_buffer_written.div_ceil(8)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil
= note: `#[warn(clippy::manual_div_ceil)]` on by default
|
|
call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L95
warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:95:49
|
95 | 255 - std::arch::x86_64::_mm256_movemask_ps(std::mem::transmute::<DataType, __m256>(inside))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
note: an unsafe function restricts its caller, but its body is safe by default
--> bitpacker/src/filter_vec/avx2.rs:91:1
|
91 | unsafe fn compute_filter_bitset(val: __m256i, range: std::ops::RangeInclusive<__m256i>) -> u8 {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset_from` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L79
warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset_from` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:79:5
|
79 | output_tail.offset_from(output) as usize
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
|
|
call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L77
warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:77:17
|
77 | input = input.offset(1);
| ^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
|
|
call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L75
warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:75:23
|
75 | output_tail = output_tail.offset(added_len as isize);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
|
|
call to unsafe function `std::arch::x86_64::_mm256_storeu_si256` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L74
warning[E0133]: call to unsafe function `std::arch::x86_64::_mm256_storeu_si256` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:74:9
|
74 | store_unaligned(output_tail as *mut __m256i, filtered_doc_ids);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
|
|
call to unsafe function `filter_vec::avx2::compact` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L73
warning[E0133]: call to unsafe function `filter_vec::avx2::compact` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:73:32
|
73 | let filtered_doc_ids = compact(ids, keeper_bitset);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
|
|
call to unsafe function `filter_vec::avx2::compute_filter_bitset` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L71
warning[E0133]: call to unsafe function `filter_vec::avx2::compute_filter_bitset` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:71:29
|
71 | let keeper_bitset = compute_filter_bitset(word, range_simd.clone());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
|
|
call to unsafe function `filter_vec::avx2::u32_to_i32_avx2` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L70
warning[E0133]: call to unsafe function `filter_vec::avx2::u32_to_i32_avx2` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:70:20
|
70 | let word = u32_to_i32_avx2(word);
| ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
|
|
call to unsafe function `std::arch::x86_64::_mm256_lddqu_si256` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L69
warning[E0133]: call to unsafe function `std::arch::x86_64::_mm256_lddqu_si256` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:69:20
|
69 | let word = load_unaligned(input);
| ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= note: consult the function's documentation for information on how to avoid undefined behavior
note: an unsafe function restricts its caller, but its body is safe by default
--> bitpacker/src/filter_vec/avx2.rs:48:1
|
48 | / unsafe fn filter_vec_avx2_aux(
49 | | mut input: *const __m256i,
50 | | range: RangeInclusive<i32>,
51 | | output: *mut u32,
52 | | offset: u32,
53 | | num_words: usize,
54 | | ) -> usize {
| |__________^
|
|
call to function `std::arch::x86_64::_mm256_xor_si256` with `#[target_feature]` is unsafe and requires unsafe block:
bitpacker/src/filter_vec/avx2.rs#L22
warning[E0133]: call to function `std::arch::x86_64::_mm256_xor_si256` with `#[target_feature]` is unsafe and requires unsafe block
--> bitpacker/src/filter_vec/avx2.rs:22:5
|
22 | op_xor(vals_u32x8s, HIGHEST_BIT_MASK)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to function with `#[target_feature]`
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
= help: in order for the call to be safe, the context requires the following additional target feature: avx2
note: an unsafe function restricts its caller, but its body is safe by default
--> bitpacker/src/filter_vec/avx2.rs:20:1
|
20 | unsafe fn u32_to_i32_avx2(vals_u32x8s: DataType) -> DataType {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: `#[warn(unsafe_op_in_unsafe_fn)]` on by default
|
|
calling .bytes() is very inefficient when data is not in memory:
common/src/vint.rs#L199
warning: calling .bytes() is very inefficient when data is not in memory
--> common/src/vint.rs:199:25
|
199 | let mut bytes = reader.bytes();
| ^^^^^^^^^^^^^^
|
= help: consider using `BufReader`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unbuffered_bytes
|
|
calling .bytes() is very inefficient when data is not in memory:
common/src/vint.rs#L32
warning: calling .bytes() is very inefficient when data is not in memory
--> common/src/vint.rs:32:25
|
32 | let mut bytes = reader.bytes();
| ^^^^^^^^^^^^^^
|
= help: consider using `BufReader`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unbuffered_bytes
= note: `#[warn(clippy::unbuffered_bytes)]` on by default
|
|
manually reimplementing `div_ceil`:
common/src/bitset.rs#L186
warning: manually reimplementing `div_ceil`
--> common/src/bitset.rs:186:5
|
186 | (max_val + 63u32) / 64u32
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `max_val.div_ceil(64u32)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil
= note: `#[warn(clippy::manual_div_ceil)]` on by default
|