about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs
index e2909be41a2..07414a6e49c 100644
--- a/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs
+++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs
@@ -3,6 +3,7 @@
 
 use std::{
     fmt,
+    ops::Div as _,
     time::{Duration, Instant},
 };
 
@@ -499,7 +500,7 @@ impl GlobalState {
         tracing::trace!("updating notifications for {:?}", subscriptions);
         // Split up the work on multiple threads, but we don't wanna fill the entire task pool with
         // diagnostic tasks, so we limit the number of tasks to a quarter of the total thread pool.
-        let max_tasks = self.config.main_loop_num_threads() / 4;
+        let max_tasks = self.config.main_loop_num_threads().div(4).max(1);
         let chunk_length = subscriptions.len() / max_tasks;
         let remainder = subscriptions.len() % max_tasks;