mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Use Sender instead of boxed closure in vfs
This commit is contained in:
parent
cb6b2ab5ba
commit
3b560a550a
6 changed files with 38 additions and 31 deletions
|
@ -119,18 +119,19 @@ impl NotifyActor {
|
|||
self.watched_dir_entries.clear();
|
||||
self.watched_file_entries.clear();
|
||||
|
||||
let send = |msg| (self.sender)(msg);
|
||||
send(loader::Message::Progress {
|
||||
n_total,
|
||||
n_done: LoadingProgress::Started,
|
||||
config_version,
|
||||
dir: None,
|
||||
});
|
||||
self.sender
|
||||
.send(loader::Message::Progress {
|
||||
n_total,
|
||||
n_done: LoadingProgress::Started,
|
||||
config_version,
|
||||
dir: None,
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
let (entry_tx, entry_rx) = unbounded();
|
||||
let (watch_tx, watch_rx) = unbounded();
|
||||
let processed = AtomicUsize::new(0);
|
||||
config.load.into_par_iter().enumerate().for_each(move |(i, entry)| {
|
||||
config.load.into_par_iter().enumerate().for_each(|(i, entry)| {
|
||||
let do_watch = config.watch.contains(&i);
|
||||
if do_watch {
|
||||
_ = entry_tx.send(entry.clone());
|
||||
|
@ -140,25 +141,31 @@ impl NotifyActor {
|
|||
entry,
|
||||
do_watch,
|
||||
|file| {
|
||||
send(loader::Message::Progress {
|
||||
n_total,
|
||||
n_done: LoadingProgress::Progress(
|
||||
processed.load(std::sync::atomic::Ordering::Relaxed),
|
||||
),
|
||||
dir: Some(file),
|
||||
config_version,
|
||||
})
|
||||
self.sender
|
||||
.send(loader::Message::Progress {
|
||||
n_total,
|
||||
n_done: LoadingProgress::Progress(
|
||||
processed
|
||||
.load(std::sync::atomic::Ordering::Relaxed),
|
||||
),
|
||||
dir: Some(file),
|
||||
config_version,
|
||||
})
|
||||
.unwrap()
|
||||
},
|
||||
);
|
||||
send(loader::Message::Loaded { files });
|
||||
send(loader::Message::Progress {
|
||||
n_total,
|
||||
n_done: LoadingProgress::Progress(
|
||||
processed.fetch_add(1, std::sync::atomic::Ordering::AcqRel) + 1,
|
||||
),
|
||||
config_version,
|
||||
dir: None,
|
||||
});
|
||||
self.sender.send(loader::Message::Loaded { files }).unwrap();
|
||||
self.sender
|
||||
.send(loader::Message::Progress {
|
||||
n_total,
|
||||
n_done: LoadingProgress::Progress(
|
||||
processed.fetch_add(1, std::sync::atomic::Ordering::AcqRel)
|
||||
+ 1,
|
||||
),
|
||||
config_version,
|
||||
dir: None,
|
||||
})
|
||||
.unwrap();
|
||||
});
|
||||
for path in watch_rx {
|
||||
self.watch(&path);
|
||||
|
@ -317,7 +324,7 @@ impl NotifyActor {
|
|||
}
|
||||
|
||||
fn send(&self, msg: loader::Message) {
|
||||
(self.sender)(msg);
|
||||
self.sender.send(msg).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue