summaryrefslogtreecommitdiff
path: root/support/texlab/src/debouncer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/debouncer.rs')
-rw-r--r--support/texlab/src/debouncer.rs55
1 files changed, 0 insertions, 55 deletions
diff --git a/support/texlab/src/debouncer.rs b/support/texlab/src/debouncer.rs
deleted file mode 100644
index b123dfc433..0000000000
--- a/support/texlab/src/debouncer.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-use std::time::{Duration, Instant};
-
-use anyhow::Result;
-
-pub struct Sender<T> {
- tx: crossbeam_channel::Sender<(T, crossbeam_channel::Receiver<Instant>)>,
-}
-
-impl<T> Clone for Sender<T> {
- fn clone(&self) -> Self {
- Self {
- tx: self.tx.clone(),
- }
- }
-}
-
-impl<T> Sender<T>
-where
- T: Send + Sync + 'static,
-{
- pub fn send(&self, msg: T, delay: Duration) -> Result<()> {
- self.tx.send((msg, crossbeam_channel::after(delay)))?;
- Ok(())
- }
-}
-
-pub struct Receiver<T> {
- rx: crossbeam_channel::Receiver<(T, crossbeam_channel::Receiver<Instant>)>,
-}
-
-impl<T> Clone for Receiver<T> {
- fn clone(&self) -> Self {
- Self {
- rx: self.rx.clone(),
- }
- }
-}
-
-impl<T> Receiver<T> {
- pub fn recv(&self) -> Result<T> {
- let (mut last_msg, delay) = self.rx.recv()?;
- delay.recv()?;
- while let Ok((msg, delay)) = self.rx.try_recv() {
- delay.recv()?;
- last_msg = msg;
- }
-
- Ok(last_msg)
- }
-}
-
-pub fn unbounded<T>() -> (Sender<T>, Receiver<T>) {
- let (tx, rx) = crossbeam_channel::unbounded();
- (Sender { tx }, Receiver { rx })
-}