| //! Configuration types | |
| use std::time::Duration; | |
| /// Indicates whether only the provided directory or its sub-directories as well should be watched | |
| #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug)] | |
| pub enum RecursiveMode { | |
| /// Watch all sub-directories as well, including directories created after installing the watch | |
| Recursive, | |
| /// Watch only the provided directory | |
| NonRecursive, | |
| } | |
| impl RecursiveMode { | |
| pub(crate) fn is_recursive(&self) -> bool { | |
| match *self { | |
| RecursiveMode::Recursive => true, | |
| RecursiveMode::NonRecursive => false, | |
| } | |
| } | |
| } | |
| /// Runtime configuration items for watchers. | |
| /// | |
| /// See the [`Watcher::configure`](../trait.Watcher.html#tymethod.configure) method for usage. | |
| #[derive(Clone, Debug, PartialEq, Eq)] | |
| pub enum Config { | |
| /// Enable or disable emitting precise event classification. | |
| /// | |
| /// Applicable to all watchers. | |
| /// | |
| /// When enabled, events are emitted with a `kind` set to as much precision about what kind of | |
| /// event they are as the backend is capable of providing. When disabled (default), events are | |
| /// instead emitted as `EventKind::Any`. `EventKind::Other` meta-events are left alone. | |
| PreciseEvents(bool), | |
| /// Enable or disable emitting `Notice` events. | |
| /// | |
| /// Applicable to debounced watchers only. | |
| /// | |
| /// When enabled, the first modify or remove event for a path is emitted immediately with a | |
| /// [`Flag::Notice`](../event/enum.Flag.html) attribute within a debouncing period, enabling | |
| /// applications to respond more quickly. | |
| NoticeEvents(bool), | |
| /// Enable or disable emitting `Ongoing` events. | |
| /// | |
| /// Applicable to debounced watchers only. | |
| /// | |
| /// When enabled, partial write events that are received after a `Modify(Data)` Notice but | |
| /// before the end of a debouncing period (and the emission of a `Modify(Data)` event) are | |
| /// passed through as `Modify(Data)` events with an `Ongoing` flag. These events are still | |
| /// debounced, but at a lower (configurable) interval than the debouncing interval. | |
| /// | |
| /// To enable, provide `Some(Duration)`. To disable, provide `None`. | |
| /// | |
| /// # Errors | |
| /// | |
| /// - `InvalidConfigValue` if the interval provided is higher than the debounce interval. | |
| OngoingEvents(Option<Duration>), | |
| } |