use std::path::Path;
use std::time::Duration;
use notify::{RecursiveMode, Watcher};
use notify_debouncer_full::new_debouncer;
fn _watch_folder_changes() {
let path = "/Users/wangbin/Downloads/test-folder";
log::info!("Watching {path}");
if let Err(error) = _watch_debounce(path) {
log::error!("Error: {error:?}");
}
}
fn _watch_debounce<P: AsRef<Path>>(path: P) -> notify::Result<()> {
let (tx, rx) = std::sync::mpsc::channel();
let mut debouncer = new_debouncer(Duration::from_secs(2), None, tx)?;
debouncer.watcher().watch(path.as_ref(), RecursiveMode::Recursive)?;
for result in rx {
match result {
Ok(events) => events.iter().for_each(|event| log::debug!("{event:?}")),
Err(errors) => errors.iter().for_each(|error| log::error!("{error:?}")),
}
}
Ok(())
}