diff options
Diffstat (limited to 'support/texlab/src/debouncer.rs')
-rw-r--r-- | support/texlab/src/debouncer.rs | 55 |
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 }) -} |