/
githubmirror
/
lapce
Обзор
Документация
Войти
/
githubmirror
/
lapce
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lapce-app/src/config/watcher.rs
55 строк
2 KB
Hanif Ariffin
Fix compilation with Rust 2024 Edition (#3637)
19 июн 2025, 10:52
Не верифицирован
19 июн 2025, 10:52
8d50fda
Код
Авторство
О чём код?
use std::sync::{Arc, atomic::AtomicBool, mpsc::Sender}; pub struct ConfigWatcher { tx: Sender<()>, delay_handler: Arc<AtomicBool>, } impl notify::EventHandler for ConfigWatcher { fn handle_event(&mut self, event: notify::Result<notify::Event>) { match event { Ok(event) => match event.kind { notify::EventKind::Create(_) | notify::EventKind::Modify(_) | notify::EventKind::Remove(_) => { if self .delay_handler .compare_exchange( false, true, std::sync::atomic::Ordering::Relaxed, std::sync::atomic::Ordering::Relaxed, ) .is_ok() { let config_mutex = self.delay_handler.clone(); let tx = self.tx.clone(); std::thread::spawn(move || { std::thread::sleep(std::time::Duration::from_millis( 500, )); if let Err(err) = tx.send(()) { tracing::error!("{:?}", err); } config_mutex .store(false, std::sync::atomic::Ordering::Relaxed); }); } } _ => {} }, Err(err) => { tracing::error!("{:?}", err); } } } } impl ConfigWatcher { pub fn new(tx: Sender<()>) -> Self { Self { tx, delay_handler: Arc::new(AtomicBool::new(false)), } } }