diff --git a/Cargo.toml b/Cargo.toml index 83fa2ca2f..38128585a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -236,6 +236,9 @@ members = [ ] resolver = "2" +[workspace.lints.clippy] +unused_unit = "allow" + [workspace.package] version = "2.2.3" edition = "2021" diff --git a/crates/cognitum-gate-kernel/Cargo.toml b/crates/cognitum-gate-kernel/Cargo.toml index 07b1776fe..6336daa1a 100644 --- a/crates/cognitum-gate-kernel/Cargo.toml +++ b/crates/cognitum-gate-kernel/Cargo.toml @@ -51,7 +51,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -129,7 +129,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/cognitum-gate-tilezero/Cargo.toml b/crates/cognitum-gate-tilezero/Cargo.toml index 78ed11335..95f55005a 100644 --- a/crates/cognitum-gate-tilezero/Cargo.toml +++ b/crates/cognitum-gate-tilezero/Cargo.toml @@ -70,7 +70,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -148,7 +148,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/mcp-brain-server/Cargo.toml b/crates/mcp-brain-server/Cargo.toml index 84cf605a7..d751da0c2 100644 --- a/crates/mcp-brain-server/Cargo.toml +++ b/crates/mcp-brain-server/Cargo.toml @@ -119,7 +119,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -197,7 +197,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/mcp-brain/Cargo.toml b/crates/mcp-brain/Cargo.toml index eb1427bda..2eb03bb7a 100644 --- a/crates/mcp-brain/Cargo.toml +++ b/crates/mcp-brain/Cargo.toml @@ -44,7 +44,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -122,7 +122,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/neural-trader-strategies/Cargo.toml b/crates/neural-trader-strategies/Cargo.toml index 442ce0478..00a9eff1d 100644 --- a/crates/neural-trader-strategies/Cargo.toml +++ b/crates/neural-trader-strategies/Cargo.toml @@ -25,7 +25,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -103,7 +103,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/prime-radiant/Cargo.toml b/crates/prime-radiant/Cargo.toml index 79986d64d..90bd7a76c 100644 --- a/crates/prime-radiant/Cargo.toml +++ b/crates/prime-radiant/Cargo.toml @@ -442,7 +442,7 @@ same_item_push = "allow" while_let_loop = "allow" while_let_on_iterator = "allow" for_kv_map = "allow" -unused_unit = "allow" + redundant_pattern = "allow" let_and_return = "allow" needless_lifetimes = "allow" @@ -492,7 +492,7 @@ overly_complex_bool_expr = "allow" len_zero = "allow" needless_doctest_main = "allow" match_like_matches_macro = "allow" -match_on_vec_items = "allow" + identity_op = "allow" match_single_binding = "allow" needless_match = "allow" diff --git a/crates/prime-radiant/src/hyperbolic/energy.rs b/crates/prime-radiant/src/hyperbolic/energy.rs index 7b6db39c0..d88a30dff 100644 --- a/crates/prime-radiant/src/hyperbolic/energy.rs +++ b/crates/prime-radiant/src/hyperbolic/energy.rs @@ -122,14 +122,24 @@ impl HyperbolicEnergy { pub fn highest_energy_edge(&self) -> Option<&WeightedResidual> { self.edge_energies .iter() - .max_by(|a, b| a.weighted_energy.partial_cmp(&b.weighted_energy).unwrap()) + // Use unwrap_or to handle NaN weighted_energy gracefully instead of panicking. + .max_by(|a, b| { + a.weighted_energy + .partial_cmp(&b.weighted_energy) + .unwrap_or(std::cmp::Ordering::Equal) + }) } /// Find deepest edge pub fn deepest_edge(&self) -> Option<&WeightedResidual> { self.edge_energies .iter() - .max_by(|a, b| a.avg_depth().partial_cmp(&b.avg_depth()).unwrap()) + // Use unwrap_or to handle NaN depth gracefully instead of panicking. + .max_by(|a, b| { + a.avg_depth() + .partial_cmp(&b.avg_depth()) + .unwrap_or(std::cmp::Ordering::Equal) + }) } /// Get edges above energy threshold diff --git a/crates/ruQu/Cargo.toml b/crates/ruQu/Cargo.toml index cee07d0bb..743e70894 100644 --- a/crates/ruQu/Cargo.toml +++ b/crates/ruQu/Cargo.toml @@ -121,7 +121,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -199,7 +199,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruqu-algorithms/Cargo.toml b/crates/ruqu-algorithms/Cargo.toml index dda0bc1fd..bff172f9a 100644 --- a/crates/ruqu-algorithms/Cargo.toml +++ b/crates/ruqu-algorithms/Cargo.toml @@ -34,7 +34,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -112,7 +112,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruqu-core/Cargo.toml b/crates/ruqu-core/Cargo.toml index de2127b1a..004682b46 100644 --- a/crates/ruqu-core/Cargo.toml +++ b/crates/ruqu-core/Cargo.toml @@ -40,7 +40,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -118,7 +118,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruqu-exotic/Cargo.toml b/crates/ruqu-exotic/Cargo.toml index 6b68f6364..d48003aed 100644 --- a/crates/ruqu-exotic/Cargo.toml +++ b/crates/ruqu-exotic/Cargo.toml @@ -31,7 +31,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -109,7 +109,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruqu-wasm/Cargo.toml b/crates/ruqu-wasm/Cargo.toml index 9beda6712..f85363da7 100644 --- a/crates/ruqu-wasm/Cargo.toml +++ b/crates/ruqu-wasm/Cargo.toml @@ -40,7 +40,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -118,7 +118,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-attention-node/Cargo.toml b/crates/ruvector-attention-node/Cargo.toml index 1c9982662..8cfe3f4a6 100644 --- a/crates/ruvector-attention-node/Cargo.toml +++ b/crates/ruvector-attention-node/Cargo.toml @@ -34,7 +34,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -112,7 +112,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-attention-unified-wasm/Cargo.toml b/crates/ruvector-attention-unified-wasm/Cargo.toml index a312ec8a8..0195e20b8 100644 --- a/crates/ruvector-attention-unified-wasm/Cargo.toml +++ b/crates/ruvector-attention-unified-wasm/Cargo.toml @@ -68,7 +68,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -146,7 +146,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-attention-wasm/Cargo.toml b/crates/ruvector-attention-wasm/Cargo.toml index d114dce2b..59df41bce 100644 --- a/crates/ruvector-attention-wasm/Cargo.toml +++ b/crates/ruvector-attention-wasm/Cargo.toml @@ -46,7 +46,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -124,7 +124,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-attn-mincut/Cargo.toml b/crates/ruvector-attn-mincut/Cargo.toml index 3a000b87c..ab7d54c67 100644 --- a/crates/ruvector-attn-mincut/Cargo.toml +++ b/crates/ruvector-attn-mincut/Cargo.toml @@ -27,7 +27,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -105,7 +105,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-bench/Cargo.toml b/crates/ruvector-bench/Cargo.toml index a759e3889..fa61646b1 100644 --- a/crates/ruvector-bench/Cargo.toml +++ b/crates/ruvector-bench/Cargo.toml @@ -105,7 +105,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -183,7 +183,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-cli/Cargo.toml b/crates/ruvector-cli/Cargo.toml index 53500656f..e7af7a4e6 100644 --- a/crates/ruvector-cli/Cargo.toml +++ b/crates/ruvector-cli/Cargo.toml @@ -97,7 +97,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -175,7 +175,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-cluster/Cargo.toml b/crates/ruvector-cluster/Cargo.toml index 5a54414ce..fd98b7820 100644 --- a/crates/ruvector-cluster/Cargo.toml +++ b/crates/ruvector-cluster/Cargo.toml @@ -35,7 +35,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -113,7 +113,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-cnn-wasm/Cargo.toml b/crates/ruvector-cnn-wasm/Cargo.toml index 3646e6387..a1e44212e 100644 --- a/crates/ruvector-cnn-wasm/Cargo.toml +++ b/crates/ruvector-cnn-wasm/Cargo.toml @@ -43,7 +43,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -121,7 +121,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-cnn/Cargo.toml b/crates/ruvector-cnn/Cargo.toml index ce24b4439..a51db1f65 100644 --- a/crates/ruvector-cnn/Cargo.toml +++ b/crates/ruvector-cnn/Cargo.toml @@ -58,7 +58,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -136,7 +136,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-consciousness-wasm/Cargo.toml b/crates/ruvector-consciousness-wasm/Cargo.toml index 06459ee60..18dcf03b2 100644 --- a/crates/ruvector-consciousness-wasm/Cargo.toml +++ b/crates/ruvector-consciousness-wasm/Cargo.toml @@ -39,7 +39,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -117,7 +117,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-consciousness/Cargo.toml b/crates/ruvector-consciousness/Cargo.toml index e08445c46..176cbd50e 100644 --- a/crates/ruvector-consciousness/Cargo.toml +++ b/crates/ruvector-consciousness/Cargo.toml @@ -61,7 +61,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -139,7 +139,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-core/Cargo.toml b/crates/ruvector-core/Cargo.toml index a20467c32..1c3ed0a63 100644 --- a/crates/ruvector-core/Cargo.toml +++ b/crates/ruvector-core/Cargo.toml @@ -122,7 +122,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -200,7 +200,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-crv/Cargo.toml b/crates/ruvector-crv/Cargo.toml index 0dd631460..754bd40bd 100644 --- a/crates/ruvector-crv/Cargo.toml +++ b/crates/ruvector-crv/Cargo.toml @@ -34,7 +34,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -112,7 +112,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-dag-wasm/Cargo.toml b/crates/ruvector-dag-wasm/Cargo.toml index c55d31912..cb2c196ee 100644 --- a/crates/ruvector-dag-wasm/Cargo.toml +++ b/crates/ruvector-dag-wasm/Cargo.toml @@ -44,7 +44,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -122,7 +122,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-dag/src/mincut/bottleneck.rs b/crates/ruvector-dag/src/mincut/bottleneck.rs index 68d125497..d0167bedb 100644 --- a/crates/ruvector-dag/src/mincut/bottleneck.rs +++ b/crates/ruvector-dag/src/mincut/bottleneck.rs @@ -41,7 +41,12 @@ impl BottleneckAnalysis { } // Sort by score descending - bottlenecks.sort_by(|a, b| b.score.partial_cmp(&a.score).unwrap()); + // Use unwrap_or to handle NaN scores gracefully instead of panicking. + bottlenecks.sort_by(|a, b| { + b.score + .partial_cmp(&a.score) + .unwrap_or(std::cmp::Ordering::Equal) + }); // Calculate total cost by iterating over all node IDs let total_cost: f64 = (0..dag.node_count()) @@ -88,7 +93,8 @@ impl BottleneckAnalysis { .parents(node_id) .iter() .filter_map(|&p| max_cost.get(&p)) - .max_by(|a, b| a.partial_cmp(b).unwrap()) + // Use unwrap_or to handle NaN costs gracefully instead of panicking. + .max_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)) .copied() .unwrap_or(0.0); @@ -97,7 +103,8 @@ impl BottleneckAnalysis { max_cost .values() - .max_by(|a, b| a.partial_cmp(b).unwrap()) + // Use unwrap_or to handle NaN costs gracefully instead of panicking. + .max_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)) .copied() .unwrap_or(0.0) } diff --git a/crates/ruvector-dag/src/sona/reasoning_bank.rs b/crates/ruvector-dag/src/sona/reasoning_bank.rs index 86e2a84e2..c53de29de 100644 --- a/crates/ruvector-dag/src/sona/reasoning_bank.rs +++ b/crates/ruvector-dag/src/sona/reasoning_bank.rs @@ -81,7 +81,8 @@ impl DagReasoningBank { .filter(|(_, sim)| *sim >= self.config.similarity_threshold) .collect(); - similarities.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); + // Use unwrap_or to handle NaN similarity scores gracefully instead of panicking. + similarities.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap_or(std::cmp::Ordering::Equal)); similarities.truncate(k); similarities } @@ -116,7 +117,8 @@ impl DagReasoningBank { .iter() .enumerate() .map(|(i, c)| (i, euclidean_distance(point, c))) - .min_by(|a, b| a.1.partial_cmp(&b.1).unwrap()) + // Use unwrap_or to handle NaN distances gracefully instead of panicking. + .min_by(|a, b| a.1.partial_cmp(&b.1).unwrap_or(std::cmp::Ordering::Equal)) .map(|(i, _)| i) .unwrap_or(0) } @@ -164,7 +166,10 @@ impl DagReasoningBank { .min_by(|(_, a), (_, b)| { let score_a = a.quality_score * (a.usage_count as f32 + 1.0).ln(); let score_b = b.quality_score * (b.usage_count as f32 + 1.0).ln(); - score_a.partial_cmp(&score_b).unwrap() + // Use unwrap_or to handle NaN scores gracefully instead of panicking. + score_a + .partial_cmp(&score_b) + .unwrap_or(std::cmp::Ordering::Equal) }) .map(|(i, _)| i) { @@ -225,7 +230,8 @@ fn kmeans_pp_init(patterns: &[DagPattern], k: usize) -> Vec> { let min_dist = centroids .iter() .map(|c| euclidean_distance(&pattern.vector, c)) - .min_by(|a, b| a.partial_cmp(b).unwrap()) + // Use unwrap_or to handle NaN distances gracefully instead of panicking. + .min_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)) .unwrap_or(0.0); let squared = min_dist * min_dist; distances.push(squared); diff --git a/crates/ruvector-decompiler/Cargo.toml b/crates/ruvector-decompiler/Cargo.toml index e789d8806..861a133cb 100644 --- a/crates/ruvector-decompiler/Cargo.toml +++ b/crates/ruvector-decompiler/Cargo.toml @@ -56,7 +56,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -134,7 +134,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-delta-consensus/Cargo.toml b/crates/ruvector-delta-consensus/Cargo.toml index 003634c2c..e47a762bd 100644 --- a/crates/ruvector-delta-consensus/Cargo.toml +++ b/crates/ruvector-delta-consensus/Cargo.toml @@ -53,7 +53,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -131,7 +131,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-delta-core/Cargo.toml b/crates/ruvector-delta-core/Cargo.toml index 7a7b90ba1..8faa172e1 100644 --- a/crates/ruvector-delta-core/Cargo.toml +++ b/crates/ruvector-delta-core/Cargo.toml @@ -57,7 +57,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -135,7 +135,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-delta-graph/Cargo.toml b/crates/ruvector-delta-graph/Cargo.toml index 7c219c76f..7a537b52d 100644 --- a/crates/ruvector-delta-graph/Cargo.toml +++ b/crates/ruvector-delta-graph/Cargo.toml @@ -48,7 +48,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -126,7 +126,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-delta-index/Cargo.toml b/crates/ruvector-delta-index/Cargo.toml index 5305b35e4..c7e06cda0 100644 --- a/crates/ruvector-delta-index/Cargo.toml +++ b/crates/ruvector-delta-index/Cargo.toml @@ -63,7 +63,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -141,7 +141,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-delta-wasm/Cargo.toml b/crates/ruvector-delta-wasm/Cargo.toml index afaacb2b3..d8583ccdd 100644 --- a/crates/ruvector-delta-wasm/Cargo.toml +++ b/crates/ruvector-delta-wasm/Cargo.toml @@ -58,7 +58,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -136,7 +136,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-diskann/Cargo.toml b/crates/ruvector-diskann/Cargo.toml index 8e6603331..abc93292d 100644 --- a/crates/ruvector-diskann/Cargo.toml +++ b/crates/ruvector-diskann/Cargo.toml @@ -34,7 +34,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -112,7 +112,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-dither/Cargo.toml b/crates/ruvector-dither/Cargo.toml index c0f2eb4d2..8aa2f76ac 100644 --- a/crates/ruvector-dither/Cargo.toml +++ b/crates/ruvector-dither/Cargo.toml @@ -34,7 +34,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -112,7 +112,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-domain-expansion-wasm/Cargo.toml b/crates/ruvector-domain-expansion-wasm/Cargo.toml index 045150100..14d23cbbe 100644 --- a/crates/ruvector-domain-expansion-wasm/Cargo.toml +++ b/crates/ruvector-domain-expansion-wasm/Cargo.toml @@ -47,7 +47,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -125,7 +125,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-domain-expansion/Cargo.toml b/crates/ruvector-domain-expansion/Cargo.toml index b35c32ca9..e2e6064e2 100644 --- a/crates/ruvector-domain-expansion/Cargo.toml +++ b/crates/ruvector-domain-expansion/Cargo.toml @@ -43,7 +43,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -121,7 +121,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-economy-wasm/Cargo.toml b/crates/ruvector-economy-wasm/Cargo.toml index 9cda7cc85..c10b9c36c 100644 --- a/crates/ruvector-economy-wasm/Cargo.toml +++ b/crates/ruvector-economy-wasm/Cargo.toml @@ -59,7 +59,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -137,7 +137,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-exotic-wasm/Cargo.toml b/crates/ruvector-exotic-wasm/Cargo.toml index f4a28d4fc..69bf7a394 100644 --- a/crates/ruvector-exotic-wasm/Cargo.toml +++ b/crates/ruvector-exotic-wasm/Cargo.toml @@ -60,7 +60,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -138,7 +138,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-fpga-transformer-wasm/Cargo.toml b/crates/ruvector-fpga-transformer-wasm/Cargo.toml index 9506293e2..427c5ac86 100644 --- a/crates/ruvector-fpga-transformer-wasm/Cargo.toml +++ b/crates/ruvector-fpga-transformer-wasm/Cargo.toml @@ -35,7 +35,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -113,7 +113,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-fpga-transformer/Cargo.toml b/crates/ruvector-fpga-transformer/Cargo.toml index 3e6136ceb..1f4478913 100644 --- a/crates/ruvector-fpga-transformer/Cargo.toml +++ b/crates/ruvector-fpga-transformer/Cargo.toml @@ -100,7 +100,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -178,7 +178,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-gnn-node/Cargo.toml b/crates/ruvector-gnn-node/Cargo.toml index c97bf4c22..933d93c66 100644 --- a/crates/ruvector-gnn-node/Cargo.toml +++ b/crates/ruvector-gnn-node/Cargo.toml @@ -32,7 +32,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -110,7 +110,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-gnn-wasm/Cargo.toml b/crates/ruvector-gnn-wasm/Cargo.toml index 163797fe0..6899b7aeb 100644 --- a/crates/ruvector-gnn-wasm/Cargo.toml +++ b/crates/ruvector-gnn-wasm/Cargo.toml @@ -58,7 +58,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -136,7 +136,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-graph-node/Cargo.toml b/crates/ruvector-graph-node/Cargo.toml index 8c0840781..f00318600 100644 --- a/crates/ruvector-graph-node/Cargo.toml +++ b/crates/ruvector-graph-node/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-graph-transformer-node/Cargo.toml b/crates/ruvector-graph-transformer-node/Cargo.toml index 7b3e17358..54ff1b845 100644 --- a/crates/ruvector-graph-transformer-node/Cargo.toml +++ b/crates/ruvector-graph-transformer-node/Cargo.toml @@ -32,7 +32,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -110,7 +110,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-graph-transformer-wasm/Cargo.toml b/crates/ruvector-graph-transformer-wasm/Cargo.toml index feac3e5ba..9c6ccb64e 100644 --- a/crates/ruvector-graph-transformer-wasm/Cargo.toml +++ b/crates/ruvector-graph-transformer-wasm/Cargo.toml @@ -39,7 +39,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -117,7 +117,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-graph-transformer/Cargo.toml b/crates/ruvector-graph-transformer/Cargo.toml index 0b082f9d5..d893b87d4 100644 --- a/crates/ruvector-graph-transformer/Cargo.toml +++ b/crates/ruvector-graph-transformer/Cargo.toml @@ -44,7 +44,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -122,7 +122,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-graph-wasm/Cargo.toml b/crates/ruvector-graph-wasm/Cargo.toml index 876015662..38c51ad73 100644 --- a/crates/ruvector-graph-wasm/Cargo.toml +++ b/crates/ruvector-graph-wasm/Cargo.toml @@ -87,7 +87,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -165,7 +165,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-graph/Cargo.toml b/crates/ruvector-graph/Cargo.toml index 6eb796006..ea46b09dd 100644 --- a/crates/ruvector-graph/Cargo.toml +++ b/crates/ruvector-graph/Cargo.toml @@ -243,7 +243,7 @@ same_item_push = "allow" while_let_loop = "allow" while_let_on_iterator = "allow" for_kv_map = "allow" -unused_unit = "allow" + redundant_pattern = "allow" let_and_return = "allow" needless_lifetimes = "allow" @@ -293,7 +293,7 @@ overly_complex_bool_expr = "allow" len_zero = "allow" needless_doctest_main = "allow" match_like_matches_macro = "allow" -match_on_vec_items = "allow" + identity_op = "allow" match_single_binding = "allow" needless_match = "allow" diff --git a/crates/ruvector-kalshi/Cargo.toml b/crates/ruvector-kalshi/Cargo.toml index 8afcc7f66..d282ea6a2 100644 --- a/crates/ruvector-kalshi/Cargo.toml +++ b/crates/ruvector-kalshi/Cargo.toml @@ -43,7 +43,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -121,7 +121,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-learning-wasm/Cargo.toml b/crates/ruvector-learning-wasm/Cargo.toml index a0d455585..76298d97f 100644 --- a/crates/ruvector-learning-wasm/Cargo.toml +++ b/crates/ruvector-learning-wasm/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-math-wasm/Cargo.toml b/crates/ruvector-math-wasm/Cargo.toml index 1ce4158b3..9764aa4f4 100644 --- a/crates/ruvector-math-wasm/Cargo.toml +++ b/crates/ruvector-math-wasm/Cargo.toml @@ -43,7 +43,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -121,7 +121,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-math/Cargo.toml b/crates/ruvector-math/Cargo.toml index f37f69e88..14f6c1c1c 100644 --- a/crates/ruvector-math/Cargo.toml +++ b/crates/ruvector-math/Cargo.toml @@ -60,7 +60,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -138,7 +138,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-mincut-gated-transformer/Cargo.toml b/crates/ruvector-mincut-gated-transformer/Cargo.toml index 696a45fdd..9a88f944a 100644 --- a/crates/ruvector-mincut-gated-transformer/Cargo.toml +++ b/crates/ruvector-mincut-gated-transformer/Cargo.toml @@ -79,7 +79,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -157,7 +157,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-mincut-node/Cargo.toml b/crates/ruvector-mincut-node/Cargo.toml index a8b3dceee..0c7ae5753 100644 --- a/crates/ruvector-mincut-node/Cargo.toml +++ b/crates/ruvector-mincut-node/Cargo.toml @@ -33,7 +33,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -111,7 +111,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-mincut-wasm/Cargo.toml b/crates/ruvector-mincut-wasm/Cargo.toml index 88a01d6a5..9bafae20b 100644 --- a/crates/ruvector-mincut-wasm/Cargo.toml +++ b/crates/ruvector-mincut-wasm/Cargo.toml @@ -37,7 +37,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -115,7 +115,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-mincut/Cargo.toml b/crates/ruvector-mincut/Cargo.toml index fdb9b5013..6292dec75 100644 --- a/crates/ruvector-mincut/Cargo.toml +++ b/crates/ruvector-mincut/Cargo.toml @@ -210,7 +210,7 @@ same_item_push = "allow" while_let_loop = "allow" while_let_on_iterator = "allow" for_kv_map = "allow" -unused_unit = "allow" + redundant_pattern = "allow" let_and_return = "allow" needless_lifetimes = "allow" @@ -260,7 +260,7 @@ overly_complex_bool_expr = "allow" len_zero = "allow" needless_doctest_main = "allow" match_like_matches_macro = "allow" -match_on_vec_items = "allow" + identity_op = "allow" match_single_binding = "allow" needless_match = "allow" @@ -281,3 +281,4 @@ single_char_lifetime_names = "allow" mut_range_bound = "allow" unnecessary_sort_by = "allow" assign_op_pattern = "allow" +unused_unit = "allow" diff --git a/crates/ruvector-nervous-system/Cargo.toml b/crates/ruvector-nervous-system/Cargo.toml index ab8f7c469..210eb5b1d 100644 --- a/crates/ruvector-nervous-system/Cargo.toml +++ b/crates/ruvector-nervous-system/Cargo.toml @@ -130,7 +130,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -208,7 +208,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-node/Cargo.toml b/crates/ruvector-node/Cargo.toml index c2fb3bdbf..b94ad0c4f 100644 --- a/crates/ruvector-node/Cargo.toml +++ b/crates/ruvector-node/Cargo.toml @@ -48,7 +48,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -126,7 +126,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-raft/Cargo.toml b/crates/ruvector-raft/Cargo.toml index 7defebc2a..3b015976e 100644 --- a/crates/ruvector-raft/Cargo.toml +++ b/crates/ruvector-raft/Cargo.toml @@ -34,7 +34,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -112,7 +112,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-replication/Cargo.toml b/crates/ruvector-replication/Cargo.toml index 3eac14934..94af58b3f 100644 --- a/crates/ruvector-replication/Cargo.toml +++ b/crates/ruvector-replication/Cargo.toml @@ -34,7 +34,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -112,7 +112,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-router-core/Cargo.toml b/crates/ruvector-router-core/Cargo.toml index e68e4d3b0..b16f613bd 100644 --- a/crates/ruvector-router-core/Cargo.toml +++ b/crates/ruvector-router-core/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-server/Cargo.toml b/crates/ruvector-server/Cargo.toml index 8743bb89d..546e3fe35 100644 --- a/crates/ruvector-server/Cargo.toml +++ b/crates/ruvector-server/Cargo.toml @@ -29,7 +29,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -107,7 +107,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-server/src/routes/points.rs b/crates/ruvector-server/src/routes/points.rs index 5b9b5f337..21feb08e8 100644 --- a/crates/ruvector-server/src/routes/points.rs +++ b/crates/ruvector-server/src/routes/points.rs @@ -37,6 +37,14 @@ fn default_limit() -> usize { 10 } +/// Maximum `k` accepted in a search request. Prevents memory exhaustion from +/// maliciously large result-set allocations. +const MAX_K: usize = 10_000; +/// Maximum number of points accepted in a single upsert batch. +const MAX_UPSERT_BATCH: usize = 10_000; +/// Maximum dimension accepted for a query vector. +const MAX_VECTOR_DIM: usize = 65_536; + /// Search response #[derive(Debug, Serialize)] pub struct SearchResponse { @@ -67,6 +75,15 @@ async fn upsert_points( Path(name): Path, Json(req): Json, ) -> Result { + // Security: guard against oversized batches that could exhaust memory. + if req.points.len() > MAX_UPSERT_BATCH { + return Err(Error::InvalidRequest(format!( + "batch size {} exceeds maximum of {}", + req.points.len(), + MAX_UPSERT_BATCH + ))); + } + let db = state .get_collection(&name) .ok_or_else(|| Error::CollectionNotFound(name.clone()))?; @@ -84,6 +101,29 @@ async fn search_points( Path(name): Path, Json(req): Json, ) -> Result { + // Security: guard against k=0, oversized k, and zero/oversized query vectors. + if req.k == 0 { + return Ok(Json(SearchResponse { results: vec![] })); + } + if req.k > MAX_K { + return Err(Error::InvalidRequest(format!( + "k={} exceeds maximum of {}", + req.k, MAX_K + ))); + } + if req.vector.is_empty() { + return Err(Error::InvalidRequest( + "query vector must not be empty".into(), + )); + } + if req.vector.len() > MAX_VECTOR_DIM { + return Err(Error::InvalidRequest(format!( + "query vector dimension {} exceeds maximum of {}", + req.vector.len(), + MAX_VECTOR_DIM + ))); + } + let db = state .get_collection(&name) .ok_or_else(|| Error::CollectionNotFound(name))?; diff --git a/crates/ruvector-snapshot/Cargo.toml b/crates/ruvector-snapshot/Cargo.toml index 96475c341..d32dd49e8 100644 --- a/crates/ruvector-snapshot/Cargo.toml +++ b/crates/ruvector-snapshot/Cargo.toml @@ -28,7 +28,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -106,7 +106,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-solver-node/Cargo.toml b/crates/ruvector-solver-node/Cargo.toml index b78160935..c5fcd4954 100644 --- a/crates/ruvector-solver-node/Cargo.toml +++ b/crates/ruvector-solver-node/Cargo.toml @@ -33,7 +33,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -111,7 +111,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-solver-wasm/Cargo.toml b/crates/ruvector-solver-wasm/Cargo.toml index 22c544a69..4fdc636d9 100644 --- a/crates/ruvector-solver-wasm/Cargo.toml +++ b/crates/ruvector-solver-wasm/Cargo.toml @@ -35,7 +35,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -113,7 +113,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-sparse-inference/Cargo.toml b/crates/ruvector-sparse-inference/Cargo.toml index d481a7902..ac272a516 100644 --- a/crates/ruvector-sparse-inference/Cargo.toml +++ b/crates/ruvector-sparse-inference/Cargo.toml @@ -59,7 +59,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -137,7 +137,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-sparsifier/Cargo.toml b/crates/ruvector-sparsifier/Cargo.toml index 25370f395..a6a416cd3 100644 --- a/crates/ruvector-sparsifier/Cargo.toml +++ b/crates/ruvector-sparsifier/Cargo.toml @@ -49,7 +49,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -127,7 +127,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-temporal-tensor/Cargo.toml b/crates/ruvector-temporal-tensor/Cargo.toml index a525662e2..4596a46ba 100644 --- a/crates/ruvector-temporal-tensor/Cargo.toml +++ b/crates/ruvector-temporal-tensor/Cargo.toml @@ -24,7 +24,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -102,7 +102,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-tiny-dancer-core/Cargo.toml b/crates/ruvector-tiny-dancer-core/Cargo.toml index 0b788cc40..5de5f6d7d 100644 --- a/crates/ruvector-tiny-dancer-core/Cargo.toml +++ b/crates/ruvector-tiny-dancer-core/Cargo.toml @@ -65,7 +65,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -143,7 +143,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-tiny-dancer-node/Cargo.toml b/crates/ruvector-tiny-dancer-node/Cargo.toml index 59d79ffd8..ed5469249 100644 --- a/crates/ruvector-tiny-dancer-node/Cargo.toml +++ b/crates/ruvector-tiny-dancer-node/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-tiny-dancer-wasm/Cargo.toml b/crates/ruvector-tiny-dancer-wasm/Cargo.toml index 9d824443c..4b6b6cf85 100644 --- a/crates/ruvector-tiny-dancer-wasm/Cargo.toml +++ b/crates/ruvector-tiny-dancer-wasm/Cargo.toml @@ -40,7 +40,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -118,7 +118,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-verified-wasm/Cargo.toml b/crates/ruvector-verified-wasm/Cargo.toml index 683abe70a..f56f6c0e7 100644 --- a/crates/ruvector-verified-wasm/Cargo.toml +++ b/crates/ruvector-verified-wasm/Cargo.toml @@ -41,7 +41,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -119,7 +119,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvector-wasm/Cargo.toml b/crates/ruvector-wasm/Cargo.toml index 531604e4b..190123303 100644 --- a/crates/ruvector-wasm/Cargo.toml +++ b/crates/ruvector-wasm/Cargo.toml @@ -97,7 +97,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -175,7 +175,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/benches/Cargo.toml b/crates/ruvix/benches/Cargo.toml index ea7f6f396..0f83456df 100644 --- a/crates/ruvix/benches/Cargo.toml +++ b/crates/ruvix/benches/Cargo.toml @@ -109,7 +109,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -188,6 +188,7 @@ incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/benches/src/ruvix.rs b/crates/ruvix/benches/src/ruvix.rs index 80f4d24f2..360c6d3e3 100644 --- a/crates/ruvix/benches/src/ruvix.rs +++ b/crates/ruvix/benches/src/ruvix.rs @@ -47,7 +47,7 @@ pub fn run_benchmark( config: &BenchConfig, ) -> BenchmarkResult where - F: Fn(&mut Kernel) -> (), + F: Fn(&mut Kernel), { let mut kernel = setup_fn(); diff --git a/crates/ruvix/crates/aarch64/Cargo.toml b/crates/ruvix/crates/aarch64/Cargo.toml index c95c3d55a..805f536a9 100644 --- a/crates/ruvix/crates/aarch64/Cargo.toml +++ b/crates/ruvix/crates/aarch64/Cargo.toml @@ -28,7 +28,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -106,7 +106,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/boot/Cargo.toml b/crates/ruvix/crates/boot/Cargo.toml index d2759be23..349a379e9 100644 --- a/crates/ruvix/crates/boot/Cargo.toml +++ b/crates/ruvix/crates/boot/Cargo.toml @@ -56,7 +56,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -134,7 +134,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/cap/Cargo.toml b/crates/ruvix/crates/cap/Cargo.toml index 5f61485e7..f767f9f98 100644 --- a/crates/ruvix/crates/cap/Cargo.toml +++ b/crates/ruvix/crates/cap/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/drivers/Cargo.toml b/crates/ruvix/crates/drivers/Cargo.toml index 719b106e7..cf6ea8788 100644 --- a/crates/ruvix/crates/drivers/Cargo.toml +++ b/crates/ruvix/crates/drivers/Cargo.toml @@ -28,7 +28,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -106,7 +106,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/hal/Cargo.toml b/crates/ruvix/crates/hal/Cargo.toml index f6e859a93..1c1d514ee 100644 --- a/crates/ruvix/crates/hal/Cargo.toml +++ b/crates/ruvix/crates/hal/Cargo.toml @@ -26,7 +26,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -104,7 +104,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/proof/Cargo.toml b/crates/ruvix/crates/proof/Cargo.toml index d93be2111..437513241 100644 --- a/crates/ruvix/crates/proof/Cargo.toml +++ b/crates/ruvix/crates/proof/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/queue/Cargo.toml b/crates/ruvix/crates/queue/Cargo.toml index 9bd9f8089..3241b0bd6 100644 --- a/crates/ruvix/crates/queue/Cargo.toml +++ b/crates/ruvix/crates/queue/Cargo.toml @@ -46,7 +46,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -124,7 +124,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/region/Cargo.toml b/crates/ruvix/crates/region/Cargo.toml index 732d0f66a..6c0bd03af 100644 --- a/crates/ruvix/crates/region/Cargo.toml +++ b/crates/ruvix/crates/region/Cargo.toml @@ -54,7 +54,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -132,7 +132,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/sched/Cargo.toml b/crates/ruvix/crates/sched/Cargo.toml index ab6248efc..e4deed2f2 100644 --- a/crates/ruvix/crates/sched/Cargo.toml +++ b/crates/ruvix/crates/sched/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/shell/Cargo.toml b/crates/ruvix/crates/shell/Cargo.toml index bc4384fb1..4d260d58a 100644 --- a/crates/ruvix/crates/shell/Cargo.toml +++ b/crates/ruvix/crates/shell/Cargo.toml @@ -40,7 +40,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -118,7 +118,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/types/Cargo.toml b/crates/ruvix/crates/types/Cargo.toml index b0c27bb1f..0de9d4a0b 100644 --- a/crates/ruvix/crates/types/Cargo.toml +++ b/crates/ruvix/crates/types/Cargo.toml @@ -49,7 +49,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -127,7 +127,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/crates/vecgraph/Cargo.toml b/crates/ruvix/crates/vecgraph/Cargo.toml index 47f65da09..c48d726c0 100644 --- a/crates/ruvix/crates/vecgraph/Cargo.toml +++ b/crates/ruvix/crates/vecgraph/Cargo.toml @@ -44,7 +44,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -122,7 +122,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/examples/cognitive_demo/Cargo.toml b/crates/ruvix/examples/cognitive_demo/Cargo.toml index c22fa4404..b5b61bd24 100644 --- a/crates/ruvix/examples/cognitive_demo/Cargo.toml +++ b/crates/ruvix/examples/cognitive_demo/Cargo.toml @@ -95,7 +95,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -173,7 +173,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvix/tests/Cargo.toml b/crates/ruvix/tests/Cargo.toml index c5006a4b6..797812920 100644 --- a/crates/ruvix/tests/Cargo.toml +++ b/crates/ruvix/tests/Cargo.toml @@ -51,7 +51,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -129,7 +129,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvllm-cli/Cargo.toml b/crates/ruvllm-cli/Cargo.toml index acd7b8e00..4925bfe54 100644 --- a/crates/ruvllm-cli/Cargo.toml +++ b/crates/ruvllm-cli/Cargo.toml @@ -78,7 +78,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -156,7 +156,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvllm-wasm/Cargo.toml b/crates/ruvllm-wasm/Cargo.toml index cd9abee7a..7c8b65a6e 100644 --- a/crates/ruvllm-wasm/Cargo.toml +++ b/crates/ruvllm-wasm/Cargo.toml @@ -85,7 +85,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -163,7 +163,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/ruvllm/src/claude_flow/hnsw_router.rs b/crates/ruvllm/src/claude_flow/hnsw_router.rs index 0fd4e7271..05c733138 100644 --- a/crates/ruvllm/src/claude_flow/hnsw_router.rs +++ b/crates/ruvllm/src/claude_flow/hnsw_router.rs @@ -538,9 +538,10 @@ impl HnswRouter { } // Find best agent + // Use unwrap_or to handle NaN scores gracefully instead of panicking. let (primary_agent, primary_score) = agent_scores .iter() - .max_by(|a, b| a.1.partial_cmp(b.1).unwrap()) + .max_by(|a, b| a.1.partial_cmp(b.1).unwrap_or(std::cmp::Ordering::Equal)) .map(|(a, s)| (*a, *s)) .unwrap_or((AgentType::Coder, 0.0)); @@ -558,13 +559,13 @@ impl HnswRouter { .filter(|(a, _)| *a != primary_agent) .map(|(a, s)| (a, s / total_score.max(0.01))) .collect(); - alternatives.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); + alternatives.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap_or(std::cmp::Ordering::Equal)); alternatives.truncate(3); // Find best task type let task_type = task_type_scores .into_iter() - .max_by(|a, b| a.1.partial_cmp(&b.1).unwrap()) + .max_by(|a, b| a.1.partial_cmp(&b.1).unwrap_or(std::cmp::Ordering::Equal)) .map(|(t, _)| t) .unwrap_or(ClaudeFlowTask::CodeGeneration); diff --git a/crates/ruvllm/src/claude_flow/pretrain_pipeline.rs b/crates/ruvllm/src/claude_flow/pretrain_pipeline.rs index 86e11b021..c6c6eb192 100644 --- a/crates/ruvllm/src/claude_flow/pretrain_pipeline.rs +++ b/crates/ruvllm/src/claude_flow/pretrain_pipeline.rs @@ -981,7 +981,12 @@ impl PretrainPipeline { // Pre-sort trajectories once (highest quality first for importance sampling) let mut sorted_trajectories = self.successful_trajectories.clone(); - sorted_trajectories.sort_by(|a, b| b.quality.partial_cmp(&a.quality).unwrap()); + // Use unwrap_or to handle NaN quality scores gracefully instead of panicking. + sorted_trajectories.sort_by(|a, b| { + b.quality + .partial_cmp(&a.quality) + .unwrap_or(std::cmp::Ordering::Equal) + }); // Replay successful trajectories multiple times for replay_idx in 0..self.config.reinforce_replays { diff --git a/crates/ruvllm/src/evaluation/report.rs b/crates/ruvllm/src/evaluation/report.rs index e15056afe..6b90025bb 100644 --- a/crates/ruvllm/src/evaluation/report.rs +++ b/crates/ruvllm/src/evaluation/report.rs @@ -73,8 +73,12 @@ impl EvalReport { }) .collect(); - // Sort by success rate (descending) - entries.sort_by(|a, b| b.success_rate.partial_cmp(&a.success_rate).unwrap()); + // Sort by success rate (descending). Use unwrap_or to handle NaN gracefully. + entries.sort_by(|a, b| { + b.success_rate + .partial_cmp(&a.success_rate) + .unwrap_or(std::cmp::Ordering::Equal) + }); // Assign ranks for (i, entry) in entries.iter_mut().enumerate() { diff --git a/crates/ruvllm/src/hub/registry.rs b/crates/ruvllm/src/hub/registry.rs index aafb652b7..19691a54a 100644 --- a/crates/ruvllm/src/hub/registry.rs +++ b/crates/ruvllm/src/hub/registry.rs @@ -335,8 +335,12 @@ impl RuvLtraRegistry { .filter(|m| !m.is_adapter && m.fits_in_ram(available_gb)) .collect(); - // Sort by parameters (largest that fits) - candidates.sort_by(|a, b| b.params_b.partial_cmp(&a.params_b).unwrap()); + // Sort by parameters (largest that fits). Use unwrap_or to handle NaN gracefully. + candidates.sort_by(|a, b| { + b.params_b + .partial_cmp(&a.params_b) + .unwrap_or(std::cmp::Ordering::Equal) + }); candidates.first().copied() } diff --git a/crates/ruvllm/src/speculative.rs b/crates/ruvllm/src/speculative.rs index a458b0460..c865b63be 100644 --- a/crates/ruvllm/src/speculative.rs +++ b/crates/ruvllm/src/speculative.rs @@ -1241,7 +1241,8 @@ pub fn top_k_filter(logits: &mut [f32], k: usize) { } let mut indexed: Vec<(usize, f32)> = logits.iter().cloned().enumerate().collect(); - indexed.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); + // Use unwrap_or to handle NaN gracefully instead of panicking. + indexed.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap_or(std::cmp::Ordering::Equal)); let threshold = indexed[k - 1].1; for logit in logits.iter_mut() { @@ -1259,7 +1260,8 @@ pub fn top_p_filter(logits: &mut [f32], p: f32) { let probs = softmax(logits); let mut indexed: Vec<(usize, f32)> = probs.iter().cloned().enumerate().collect(); - indexed.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); + // Use unwrap_or to handle NaN gracefully instead of panicking. + indexed.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap_or(std::cmp::Ordering::Equal)); let mut cumsum = 0.0; let mut cutoff_idx = indexed.len(); diff --git a/crates/rvAgent/rvagent-acp/Cargo.toml b/crates/rvAgent/rvagent-acp/Cargo.toml index c6302957d..63e36e7fe 100644 --- a/crates/rvAgent/rvagent-acp/Cargo.toml +++ b/crates/rvAgent/rvagent-acp/Cargo.toml @@ -44,7 +44,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -122,7 +122,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-backends/Cargo.toml b/crates/rvAgent/rvagent-backends/Cargo.toml index 4427e55c4..98932c9b7 100644 --- a/crates/rvAgent/rvagent-backends/Cargo.toml +++ b/crates/rvAgent/rvagent-backends/Cargo.toml @@ -48,7 +48,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -126,7 +126,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-cli/Cargo.toml b/crates/rvAgent/rvagent-cli/Cargo.toml index 05eee09a1..109bb0b65 100644 --- a/crates/rvAgent/rvagent-cli/Cargo.toml +++ b/crates/rvAgent/rvagent-cli/Cargo.toml @@ -54,7 +54,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -132,7 +132,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-cli/src/app.rs b/crates/rvAgent/rvagent-cli/src/app.rs index b3e07f8a6..06057dd5e 100644 --- a/crates/rvAgent/rvagent-cli/src/app.rs +++ b/crates/rvAgent/rvagent-cli/src/app.rs @@ -329,21 +329,91 @@ impl rvagent_tools::Backend for LocalFsBackend { command: &str, timeout_secs: u32, ) -> std::result::Result { - use std::process::Command; - let output = Command::new("sh") - .arg("-c") - .arg(command) - .current_dir(&self.cwd) - .output() - .map_err(|e| format!("execute failed: {}", e))?; - let _ = timeout_secs; // timeout handled at a higher level if needed + use std::process::{Command, Stdio}; + use std::time::Duration; + + // Security: environment sanitization — strip sensitive variables (SEC-005 / ADR-103 C2). + // Only pass through a safe allowlist of environment variables. + const SAFE_ENV_VARS: &[&str] = &[ + "PATH", "HOME", "USER", "SHELL", "LANG", "LC_ALL", "LC_CTYPE", "TERM", "TMPDIR", "TZ", + ]; + // Patterns that identify sensitive env vars that must never reach child processes. + const SENSITIVE_PATTERNS: &[&str] = &[ + "SECRET", + "KEY", + "TOKEN", + "PASSWORD", + "CREDENTIAL", + "AWS_", + "AZURE_", + "GCP_", + "DATABASE_URL", + "PRIVATE", + "API_KEY", + "AUTH", + "BEARER", + "JWT", + "SESSION", + ]; + + let mut cmd = Command::new("sh"); + cmd.arg("-c").arg(command).current_dir(&self.cwd); + cmd.env_clear(); + for var in SAFE_ENV_VARS { + if let Ok(val) = std::env::var(var) { + let upper = var.to_uppercase(); + let sensitive = SENSITIVE_PATTERNS.iter().any(|pat| upper.contains(pat)); + if !sensitive { + cmd.env(var, val); + } + } + } + cmd.stdout(Stdio::piped()).stderr(Stdio::piped()); + + let timeout = if timeout_secs == 0 { 30 } else { timeout_secs }; + let deadline = std::time::Instant::now() + Duration::from_secs(timeout as u64); + + let mut child = cmd.spawn().map_err(|e| format!("execute failed: {}", e))?; + + // Poll for completion with a deadline to enforce the timeout. + loop { + match child + .try_wait() + .map_err(|e| format!("wait failed: {}", e))? + { + Some(_) => break, + None => { + if std::time::Instant::now() >= deadline { + let _ = child.kill(); + return Ok(rvagent_tools::ExecuteResponse { + output: format!("Command timed out after {} seconds", timeout), + exit_code: -1, + }); + } + std::thread::sleep(Duration::from_millis(50)); + } + } + } + + let output = child + .wait_with_output() + .map_err(|e| format!("output collection failed: {}", e))?; + let stdout = String::from_utf8_lossy(&output.stdout); let stderr = String::from_utf8_lossy(&output.stderr); - let combined = if stderr.is_empty() { + let mut combined = if stderr.is_empty() { stdout.into_owned() } else { format!("{}\n{}", stdout, stderr) }; + + // Security: cap output size to 1 MB to prevent memory exhaustion. + const MAX_OUTPUT_BYTES: usize = 1024 * 1024; + if combined.len() > MAX_OUTPUT_BYTES { + combined.truncate(MAX_OUTPUT_BYTES); + combined.push_str("\n... [output truncated at 1 MB]"); + } + Ok(rvagent_tools::ExecuteResponse { output: combined, exit_code: output.status.code().unwrap_or(-1), diff --git a/crates/rvAgent/rvagent-core/Cargo.toml b/crates/rvAgent/rvagent-core/Cargo.toml index 20a027459..b30e58960 100644 --- a/crates/rvAgent/rvagent-core/Cargo.toml +++ b/crates/rvAgent/rvagent-core/Cargo.toml @@ -45,7 +45,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -123,7 +123,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-mcp/Cargo.toml b/crates/rvAgent/rvagent-mcp/Cargo.toml index 94973fb2e..615154403 100644 --- a/crates/rvAgent/rvagent-mcp/Cargo.toml +++ b/crates/rvAgent/rvagent-mcp/Cargo.toml @@ -46,7 +46,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -124,7 +124,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-middleware/Cargo.toml b/crates/rvAgent/rvagent-middleware/Cargo.toml index 7218429a8..4a87e36c0 100644 --- a/crates/rvAgent/rvagent-middleware/Cargo.toml +++ b/crates/rvAgent/rvagent-middleware/Cargo.toml @@ -50,7 +50,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -128,7 +128,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-subagents/Cargo.toml b/crates/rvAgent/rvagent-subagents/Cargo.toml index 48a5e709b..e7ca05206 100644 --- a/crates/rvAgent/rvagent-subagents/Cargo.toml +++ b/crates/rvAgent/rvagent-subagents/Cargo.toml @@ -32,7 +32,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -110,7 +110,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-wasm/Cargo.toml b/crates/rvAgent/rvagent-wasm/Cargo.toml index 156ef8d6f..dc015bd29 100644 --- a/crates/rvAgent/rvagent-wasm/Cargo.toml +++ b/crates/rvAgent/rvagent-wasm/Cargo.toml @@ -45,7 +45,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -123,7 +123,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/rvAgent/rvagent-wasm/src/gallery.rs b/crates/rvAgent/rvagent-wasm/src/gallery.rs index 2c512a007..3b51bf6a5 100644 --- a/crates/rvAgent/rvagent-wasm/src/gallery.rs +++ b/crates/rvAgent/rvagent-wasm/src/gallery.rs @@ -753,8 +753,12 @@ impl WasmGallery { }) .collect(); - // Sort by relevance - results.sort_by(|a, b| b.relevance.partial_cmp(&a.relevance).unwrap()); + // Sort by relevance. Use unwrap_or to handle NaN gracefully instead of panicking. + results.sort_by(|a, b| { + b.relevance + .partial_cmp(&a.relevance) + .unwrap_or(std::cmp::Ordering::Equal) + }); to_js_value(&results) } diff --git a/crates/rvAgent/rvagent-wasm/src/mcp.rs b/crates/rvAgent/rvagent-wasm/src/mcp.rs index 184591f95..4160be547 100644 --- a/crates/rvAgent/rvagent-wasm/src/mcp.rs +++ b/crates/rvAgent/rvagent-wasm/src/mcp.rs @@ -457,11 +457,11 @@ impl WasmMcpServer { }) .collect(); - // Sort by relevance (descending) + // Sort by relevance (descending). Use unwrap_or to handle NaN gracefully. results.sort_by(|a, b| { let ra = a.get("relevance").and_then(|v| v.as_f64()).unwrap_or(0.0); let rb = b.get("relevance").and_then(|v| v.as_f64()).unwrap_or(0.0); - rb.partial_cmp(&ra).unwrap() + rb.partial_cmp(&ra).unwrap_or(std::cmp::Ordering::Equal) }); JsonRpcResponse::success( diff --git a/crates/rvlite/Cargo.toml b/crates/rvlite/Cargo.toml index 14f7efa46..0b935918a 100644 --- a/crates/rvlite/Cargo.toml +++ b/crates/rvlite/Cargo.toml @@ -99,7 +99,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -177,7 +177,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/sona/Cargo.toml b/crates/sona/Cargo.toml index a323ea298..a15064636 100644 --- a/crates/sona/Cargo.toml +++ b/crates/sona/Cargo.toml @@ -81,7 +81,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -159,7 +159,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/crates/thermorust/Cargo.toml b/crates/thermorust/Cargo.toml index 47a757562..8adb90725 100644 --- a/crates/thermorust/Cargo.toml +++ b/crates/thermorust/Cargo.toml @@ -30,7 +30,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -108,7 +108,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/boundary-discovery/Cargo.toml b/examples/boundary-discovery/Cargo.toml index 3dfad019f..e3f807f42 100644 --- a/examples/boundary-discovery/Cargo.toml +++ b/examples/boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/brain-boundary-discovery/Cargo.toml b/examples/brain-boundary-discovery/Cargo.toml index ade31b602..2ee425483 100644 --- a/examples/brain-boundary-discovery/Cargo.toml +++ b/examples/brain-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/climate-consciousness/Cargo.toml b/examples/climate-consciousness/Cargo.toml index 22c39d3b1..5e0342b4c 100644 --- a/examples/climate-consciousness/Cargo.toml +++ b/examples/climate-consciousness/Cargo.toml @@ -22,7 +22,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -100,7 +100,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/cmb-consciousness/Cargo.toml b/examples/cmb-consciousness/Cargo.toml index 91aba1edb..e4c9d356d 100644 --- a/examples/cmb-consciousness/Cargo.toml +++ b/examples/cmb-consciousness/Cargo.toml @@ -22,7 +22,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -100,7 +100,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/dna/Cargo.toml b/examples/dna/Cargo.toml index a05971e89..b284c6c62 100644 --- a/examples/dna/Cargo.toml +++ b/examples/dna/Cargo.toml @@ -89,7 +89,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -167,7 +167,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/earthquake-boundary-discovery/Cargo.toml b/examples/earthquake-boundary-discovery/Cargo.toml index 2208fb604..f3b445d9d 100644 --- a/examples/earthquake-boundary-discovery/Cargo.toml +++ b/examples/earthquake-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/ecosystem-consciousness/Cargo.toml b/examples/ecosystem-consciousness/Cargo.toml index a6843b332..c7e0b8284 100644 --- a/examples/ecosystem-consciousness/Cargo.toml +++ b/examples/ecosystem-consciousness/Cargo.toml @@ -22,7 +22,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -100,7 +100,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/frb-boundary-discovery/Cargo.toml b/examples/frb-boundary-discovery/Cargo.toml index 7841cbce5..537b6cb42 100644 --- a/examples/frb-boundary-discovery/Cargo.toml +++ b/examples/frb-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/gene-consciousness/Cargo.toml b/examples/gene-consciousness/Cargo.toml index 10ec42d99..8f5d24df7 100644 --- a/examples/gene-consciousness/Cargo.toml +++ b/examples/gene-consciousness/Cargo.toml @@ -22,7 +22,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -100,7 +100,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/google-cloud/Cargo.toml b/examples/google-cloud/Cargo.toml index 5b181c8d8..3b4e1c0c7 100644 --- a/examples/google-cloud/Cargo.toml +++ b/examples/google-cloud/Cargo.toml @@ -66,7 +66,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -144,7 +144,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/gw-consciousness/Cargo.toml b/examples/gw-consciousness/Cargo.toml index 460f7d6ce..be00ad04a 100644 --- a/examples/gw-consciousness/Cargo.toml +++ b/examples/gw-consciousness/Cargo.toml @@ -22,7 +22,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -100,7 +100,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/health-boundary-discovery/Cargo.toml b/examples/health-boundary-discovery/Cargo.toml index bdcf637ac..10f750262 100644 --- a/examples/health-boundary-discovery/Cargo.toml +++ b/examples/health-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/infrastructure-boundary-discovery/Cargo.toml b/examples/infrastructure-boundary-discovery/Cargo.toml index c48e707ec..40ec96b7f 100644 --- a/examples/infrastructure-boundary-discovery/Cargo.toml +++ b/examples/infrastructure-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/market-boundary-discovery/Cargo.toml b/examples/market-boundary-discovery/Cargo.toml index d2cae7b99..fdcc3e1b2 100644 --- a/examples/market-boundary-discovery/Cargo.toml +++ b/examples/market-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/music-boundary-discovery/Cargo.toml b/examples/music-boundary-discovery/Cargo.toml index 55dc59239..ff125e99b 100644 --- a/examples/music-boundary-discovery/Cargo.toml +++ b/examples/music-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/pandemic-boundary-discovery/Cargo.toml b/examples/pandemic-boundary-discovery/Cargo.toml index 413f9eb2e..0c413ab22 100644 --- a/examples/pandemic-boundary-discovery/Cargo.toml +++ b/examples/pandemic-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/quantum-consciousness/Cargo.toml b/examples/quantum-consciousness/Cargo.toml index 3662b3c2a..b039e0061 100644 --- a/examples/quantum-consciousness/Cargo.toml +++ b/examples/quantum-consciousness/Cargo.toml @@ -22,7 +22,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -100,7 +100,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/real-eeg-analysis/Cargo.toml b/examples/real-eeg-analysis/Cargo.toml index 69fb62765..cb004a3c3 100644 --- a/examples/real-eeg-analysis/Cargo.toml +++ b/examples/real-eeg-analysis/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/real-eeg-multi-seizure/Cargo.toml b/examples/real-eeg-multi-seizure/Cargo.toml index 27cd9c89b..57104ee9a 100644 --- a/examples/real-eeg-multi-seizure/Cargo.toml +++ b/examples/real-eeg-multi-seizure/Cargo.toml @@ -15,7 +15,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -93,7 +93,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/refrag-pipeline/Cargo.toml b/examples/refrag-pipeline/Cargo.toml index c996bb8b3..fa7961633 100644 --- a/examples/refrag-pipeline/Cargo.toml +++ b/examples/refrag-pipeline/Cargo.toml @@ -56,7 +56,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -134,7 +134,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/scipix/Cargo.toml b/examples/scipix/Cargo.toml index b584e6d8a..9f1d811b3 100644 --- a/examples/scipix/Cargo.toml +++ b/examples/scipix/Cargo.toml @@ -247,7 +247,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -325,7 +325,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/seizure-clinical-report/Cargo.toml b/examples/seizure-clinical-report/Cargo.toml index 89c113fad..08b1c91c8 100644 --- a/examples/seizure-clinical-report/Cargo.toml +++ b/examples/seizure-clinical-report/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/seizure-therapeutic-sim/Cargo.toml b/examples/seizure-therapeutic-sim/Cargo.toml index 775e39b96..9d9150903 100644 --- a/examples/seizure-therapeutic-sim/Cargo.toml +++ b/examples/seizure-therapeutic-sim/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/seti-boundary-discovery/Cargo.toml b/examples/seti-boundary-discovery/Cargo.toml index 0c6f4493a..ec468c3f9 100644 --- a/examples/seti-boundary-discovery/Cargo.toml +++ b/examples/seti-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/seti-exotic-signals/Cargo.toml b/examples/seti-exotic-signals/Cargo.toml index 27a2e8a94..b5766fd7d 100644 --- a/examples/seti-exotic-signals/Cargo.toml +++ b/examples/seti-exotic-signals/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/subpolynomial-time/Cargo.toml b/examples/subpolynomial-time/Cargo.toml index 367a5410a..84d26ae81 100644 --- a/examples/subpolynomial-time/Cargo.toml +++ b/examples/subpolynomial-time/Cargo.toml @@ -17,7 +17,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -95,7 +95,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/temporal-attractor-discovery/Cargo.toml b/examples/temporal-attractor-discovery/Cargo.toml index 2e3941464..ca9a50708 100644 --- a/examples/temporal-attractor-discovery/Cargo.toml +++ b/examples/temporal-attractor-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/verified-applications/Cargo.toml b/examples/verified-applications/Cargo.toml index c98810b63..3de6dc33e 100644 --- a/examples/verified-applications/Cargo.toml +++ b/examples/verified-applications/Cargo.toml @@ -23,7 +23,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -101,7 +101,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" diff --git a/examples/weather-boundary-discovery/Cargo.toml b/examples/weather-boundary-discovery/Cargo.toml index 584ad67d1..0f756688a 100644 --- a/examples/weather-boundary-discovery/Cargo.toml +++ b/examples/weather-boundary-discovery/Cargo.toml @@ -16,7 +16,7 @@ unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" -unused_unit = "allow" + unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" @@ -94,7 +94,7 @@ absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" -unused_unit = "allow" + map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow"