Skip to content

Commit 204fb5b

Browse files
committed
Avoid the overhead of select! when possible
1 parent 35903a2 commit 204fb5b

File tree

1 file changed

+6
-3
lines changed
  • src/tools/rust-analyzer/crates/vfs-notify/src

1 file changed

+6
-3
lines changed

src/tools/rust-analyzer/crates/vfs-notify/src/lib.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use std::{
1313
sync::atomic::AtomicUsize,
1414
};
1515

16-
use crossbeam_channel::{never, select, unbounded, Receiver, Sender};
16+
use crossbeam_channel::{select, unbounded, Receiver, Sender};
1717
use notify::{Config, EventKind, RecommendedWatcher, RecursiveMode, Watcher};
1818
use paths::{AbsPath, AbsPathBuf, Utf8PathBuf};
1919
use rayon::iter::{IndexedParallelIterator as _, IntoParallelIterator as _, ParallelIterator};
@@ -85,10 +85,13 @@ impl NotifyActor {
8585
}
8686

8787
fn next_event(&self, receiver: &Receiver<Message>) -> Option<Event> {
88-
let watcher_receiver = self.watcher.as_ref().map(|(_, receiver)| receiver);
88+
let Some((_, watcher_receiver)) = &self.watcher else {
89+
return receiver.recv().ok().map(Event::Message);
90+
};
91+
8992
select! {
9093
recv(receiver) -> it => it.ok().map(Event::Message),
91-
recv(watcher_receiver.unwrap_or(&never())) -> it => Some(Event::NotifyEvent(it.unwrap())),
94+
recv(watcher_receiver) -> it => Some(Event::NotifyEvent(it.unwrap())),
9295
}
9396
}
9497

0 commit comments

Comments
 (0)