diff --git a/crates/vestige-core/src/advanced/chains.rs b/crates/vestige-core/src/advanced/chains.rs index 8df1fff..3b92bd3 100644 --- a/crates/vestige-core/src/advanced/chains.rs +++ b/crates/vestige-core/src/advanced/chains.rs @@ -333,7 +333,7 @@ impl MemoryChainBuilder { // Sort by frequency let mut bridge_list: Vec<_> = bridges.into_iter().collect(); - bridge_list.sort_by(|a, b| b.1.cmp(&a.1)); + bridge_list.sort_by_key(|b| std::cmp::Reverse(b.1)); bridge_list.into_iter().map(|(id, _)| id).collect() } diff --git a/crates/vestige-core/src/advanced/compression.rs b/crates/vestige-core/src/advanced/compression.rs index d5358b4..2ea2309 100644 --- a/crates/vestige-core/src/advanced/compression.rs +++ b/crates/vestige-core/src/advanced/compression.rs @@ -298,7 +298,7 @@ impl MemoryCompressor { // Sort by age (oldest first) let mut sorted: Vec<_> = memories.iter().collect(); - sorted.sort_by(|a, b| a.created_at.cmp(&b.created_at)); + sorted.sort_by_key(|a| a.created_at); for memory in sorted { if assigned.contains(&memory.id) { diff --git a/crates/vestige-core/src/advanced/cross_project.rs b/crates/vestige-core/src/advanced/cross_project.rs index f48b964..ffda53a 100644 --- a/crates/vestige-core/src/advanced/cross_project.rs +++ b/crates/vestige-core/src/advanced/cross_project.rs @@ -417,7 +417,7 @@ impl CrossProjectLearner { } } - suggestions.sort_by(|a, b| b.priority.cmp(&a.priority)); + suggestions.sort_by_key(|b| std::cmp::Reverse(b.priority)); suggestions } diff --git a/crates/vestige-core/src/advanced/reconsolidation.rs b/crates/vestige-core/src/advanced/reconsolidation.rs index 83bc39e..933442c 100644 --- a/crates/vestige-core/src/advanced/reconsolidation.rs +++ b/crates/vestige-core/src/advanced/reconsolidation.rs @@ -678,7 +678,7 @@ impl ReconsolidationManager { .read() .map(|history| { let mut recent: Vec<_> = history.iter().cloned().collect(); - recent.sort_by(|a, b| b.retrieved_at.cmp(&a.retrieved_at)); + recent.sort_by_key(|b| std::cmp::Reverse(b.retrieved_at)); recent.into_iter().take(limit).collect() }) .unwrap_or_default() diff --git a/crates/vestige-core/src/codebase/git.rs b/crates/vestige-core/src/codebase/git.rs index ea4fdae..648f7b1 100644 --- a/crates/vestige-core/src/codebase/git.rs +++ b/crates/vestige-core/src/codebase/git.rs @@ -673,11 +673,11 @@ impl GitAnalyzer { // Top contributors let mut top_contributors: Vec<_> = author_counts.into_iter().collect(); - top_contributors.sort_by(|a, b| b.1.cmp(&a.1)); + top_contributors.sort_by_key(|b| std::cmp::Reverse(b.1)); // Hot files (most frequently changed) let mut hot_files: Vec<_> = file_counts.into_iter().collect(); - hot_files.sort_by(|a, b| b.1.cmp(&a.1)); + hot_files.sort_by_key(|b| std::cmp::Reverse(b.1)); Ok(HistoryAnalysis { bug_fixes, diff --git a/crates/vestige-core/src/codebase/relationships.rs b/crates/vestige-core/src/codebase/relationships.rs index b2a8644..ce7a1d2 100644 --- a/crates/vestige-core/src/codebase/relationships.rs +++ b/crates/vestige-core/src/codebase/relationships.rs @@ -579,7 +579,7 @@ impl RelationshipTracker { } let mut sorted: Vec<_> = file_degrees.into_iter().collect(); - sorted.sort_by(|a, b| b.1.cmp(&a.1)); + sorted.sort_by_key(|b| std::cmp::Reverse(b.1)); sorted.truncate(limit); sorted diff --git a/crates/vestige-core/src/neuroscience/importance_signals.rs b/crates/vestige-core/src/neuroscience/importance_signals.rs index f44f3fb..26da186 100644 --- a/crates/vestige-core/src/neuroscience/importance_signals.rs +++ b/crates/vestige-core/src/neuroscience/importance_signals.rs @@ -464,7 +464,7 @@ impl PredictionModel { .filter_map(|ng| patterns.get(&ng).map(|&count| (ng, count))) .collect(); - familiar.sort_by(|a, b| b.1.cmp(&a.1)); + familiar.sort_by_key(|b| std::cmp::Reverse(b.1)); familiar.into_iter().take(5).map(|(ng, _)| ng).collect() } @@ -489,7 +489,7 @@ impl PredictionModel { fn apply_decay(&self, patterns: &mut HashMap) { // Remove lowest frequency patterns let mut entries: Vec<_> = patterns.iter().map(|(k, v)| (k.clone(), *v)).collect(); - entries.sort_by(|a, b| a.1.cmp(&b.1)); + entries.sort_by_key(|a| a.1); // Remove bottom 20% let remove_count = patterns.len() / 5; diff --git a/crates/vestige-core/src/neuroscience/memory_states.rs b/crates/vestige-core/src/neuroscience/memory_states.rs index 0aca454..c5f898a 100644 --- a/crates/vestige-core/src/neuroscience/memory_states.rs +++ b/crates/vestige-core/src/neuroscience/memory_states.rs @@ -1276,14 +1276,12 @@ impl MemoryStateInfo { )); } } - MemoryState::Dormant => { - if duration_since_access.num_days() > 20 { - recommendations.push( - "Consider accessing this memory soon to prevent it from \ - becoming harder to retrieve." - .to_string(), - ); - } + MemoryState::Dormant if duration_since_access.num_days() > 20 => { + recommendations.push( + "Consider accessing this memory soon to prevent it from \ + becoming harder to retrieve." + .to_string(), + ); } _ => {} } diff --git a/crates/vestige-core/src/neuroscience/predictive_retrieval.rs b/crates/vestige-core/src/neuroscience/predictive_retrieval.rs index 9c79c3e..77934e1 100644 --- a/crates/vestige-core/src/neuroscience/predictive_retrieval.rs +++ b/crates/vestige-core/src/neuroscience/predictive_retrieval.rs @@ -582,7 +582,7 @@ impl UserModel { } // Sort by count and keep top patterns - patterns.sort_by(|a, b| b.1.cmp(&a.1)); + patterns.sort_by_key(|b| std::cmp::Reverse(b.1)); patterns.truncate(50); } diff --git a/crates/vestige-mcp/src/dashboard/websocket.rs b/crates/vestige-mcp/src/dashboard/websocket.rs index 97471ef..3ee6fac 100644 --- a/crates/vestige-mcp/src/dashboard/websocket.rs +++ b/crates/vestige-mcp/src/dashboard/websocket.rs @@ -123,6 +123,9 @@ async fn handle_socket(socket: WebSocket, state: AppState) { msg = receiver.next() => { match msg { Some(Ok(Message::Close(_))) | None => break, + // Match guards can't move out of the bound `data` (Bytes is + // not Copy), so the nested `if` is required here. + #[allow(clippy::collapsible_match, clippy::collapsible_if)] Some(Ok(Message::Ping(data))) => { if sender.send(Message::Pong(data)).await.is_err() { break; diff --git a/crates/vestige-mcp/src/tools/changelog.rs b/crates/vestige-mcp/src/tools/changelog.rs index ef4811e..8a2e746 100644 --- a/crates/vestige-mcp/src/tools/changelog.rs +++ b/crates/vestige-mcp/src/tools/changelog.rs @@ -237,7 +237,7 @@ fn execute_system_wide( } // Sort by timestamp descending - events.sort_by(|a, b| b.0.cmp(&a.0)); + events.sort_by_key(|b| std::cmp::Reverse(b.0)); // Truncate to limit events.truncate(limit as usize); diff --git a/crates/vestige-mcp/src/tools/cross_reference.rs b/crates/vestige-mcp/src/tools/cross_reference.rs index fdfd0cc..6a56da6 100644 --- a/crates/vestige-mcp/src/tools/cross_reference.rs +++ b/crates/vestige-mcp/src/tools/cross_reference.rs @@ -560,7 +560,7 @@ pub async fn execute( // Sort by date descending for supersession let mut by_date = scored.iter().collect::>(); - by_date.sort_by(|a, b| b.updated_at.cmp(&a.updated_at)); + by_date.sort_by_key(|b| std::cmp::Reverse(b.updated_at)); for i in 0..by_date.len() { for j in (i + 1)..by_date.len() {