1use std::path::PathBuf;
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6/// A debounced event kind.
7#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9#[non_exhaustive]
10pub enum DebouncedEventKind {
11 /// No precise events
12 Any,
13 /// Event but debounce timed out (for example continuous writes)
14 AnyContinuous,
15}
16
17/// A debounced event.
18///
19/// Does not emit any specific event type on purpose, only distinguishes between an any event and a continuous any event.
20#[derive(Clone, Debug, Eq, Hash, PartialEq)]
21#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
22pub struct DebouncedEvent {
23 /// Event path
24 pub path: PathBuf,
25 /// Event kind
26 pub kind: DebouncedEventKind,
27}
28
29impl DebouncedEvent {
30 #[inline(always)]
31 pub fn new(path: PathBuf, kind: DebouncedEventKind) -> Self {
32 Self { path, kind }
33 }
34}
35