Skip to content

Commit 6c5504a

Browse files
committed
one last bit of cleanup
1 parent c3f30ae commit 6c5504a

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

crates/ide/src/prime_caches.rs

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use ide_db::{
1414
};
1515
use rustc_hash::FxHashSet;
1616

17-
use crate::RootDatabase;
17+
use crate::{prime_caches, RootDatabase};
1818

1919
/// We're indexing many crates.
2020
#[derive(Debug)]
@@ -54,34 +54,37 @@ pub(crate) fn parallel_prime_caches(
5454
builder.build()
5555
};
5656

57-
let (work_sender, work_receiver) = crossbeam_channel::unbounded();
58-
let (progress_sender, progress_receiver) = crossbeam_channel::unbounded();
59-
6057
enum ParallelPrimeCacheWorkerProgress {
6158
BeginCrate { crate_id: CrateId, crate_name: String },
6259
EndCrate { crate_id: CrateId },
6360
}
6461

65-
let prime_caches_worker = move |db: Snapshot<RootDatabase>| {
66-
while let Ok((crate_id, crate_name)) = work_receiver.recv() {
67-
progress_sender
68-
.send(ParallelPrimeCacheWorkerProgress::BeginCrate { crate_id, crate_name })?;
62+
let (work_sender, progress_receiver) = {
63+
let (progress_sender, progress_receiver) = crossbeam_channel::unbounded();
64+
let (work_sender, work_receiver) = crossbeam_channel::unbounded();
65+
let prime_caches_worker = move |db: Snapshot<RootDatabase>| {
66+
while let Ok((crate_id, crate_name)) = work_receiver.recv() {
67+
progress_sender
68+
.send(ParallelPrimeCacheWorkerProgress::BeginCrate { crate_id, crate_name })?;
69+
70+
// This also computes the DefMap
71+
db.import_map(crate_id);
6972

70-
// This also computes the DefMap
71-
db.import_map(crate_id);
73+
progress_sender.send(ParallelPrimeCacheWorkerProgress::EndCrate { crate_id })?;
74+
}
7275

73-
progress_sender.send(ParallelPrimeCacheWorkerProgress::EndCrate { crate_id })?;
76+
Ok::<_, crossbeam_channel::SendError<_>>(())
77+
};
78+
79+
for _ in 0..num_worker_threads {
80+
let worker = prime_caches_worker.clone();
81+
let db = db.snapshot();
82+
std::thread::spawn(move || Cancelled::catch(|| worker(db)));
7483
}
7584

76-
Ok::<_, crossbeam_channel::SendError<_>>(())
85+
(work_sender, progress_receiver)
7786
};
7887

79-
for _ in 0..num_worker_threads {
80-
let worker = prime_caches_worker.clone();
81-
let db = db.snapshot();
82-
std::thread::spawn(move || Cancelled::catch(|| worker(db)));
83-
}
84-
8588
let crates_total = crates_to_prime.pending();
8689
let mut crates_done = 0;
8790

0 commit comments

Comments
 (0)