use std::time::Duration;
#[derive(Debug, Clone)]
#[expect(clippy::struct_excessive_bools)] pub struct FsWatcherConfig {
pub enabled: bool,
pub debounce_delay: u64,
pub poll_interval: u64,
pub compare_contents_for_polling: bool,
pub debounce_tick_rate: Option<u64>,
pub use_polling: bool,
pub use_debounce: bool,
}
impl Default for FsWatcherConfig {
fn default() -> Self {
Self {
enabled: true,
debounce_delay: 10,
poll_interval: 100,
compare_contents_for_polling: false,
debounce_tick_rate: None,
use_polling: false,
use_debounce: false,
}
}
}
impl FsWatcherConfig {
pub fn debounce_delay_duration(&self) -> Duration {
Duration::from_millis(self.debounce_delay)
}
pub fn poll_interval_duration(&self) -> Duration {
Duration::from_millis(self.poll_interval)
}
pub fn debounce_tick_rate(&self) -> Option<Duration> {
self.debounce_tick_rate.map(Duration::from_millis)
}
pub fn to_notify_config(&self) -> notify::Config {
notify::Config::default()
.with_poll_interval(self.poll_interval_duration())
.with_compare_contents(self.compare_contents_for_polling)
}
}