pub struct Event {
pub kind: EventKind,
pub paths: Vec<PathBuf>,
pub attrs: EventAttributes,
}
Expand description
Notify event.
You might want to check Event::need_rescan
to make sure no event was missed before you
received this one.
Fields§
§kind: EventKind
Kind or type of the event.
This is a hierarchy of enums describing the event as precisely as possible. All enums in
the hierarchy have two variants always present, Any
and Other
, accompanied by one or
more specific variants.
Any
should be used when more detail about the event is not known beyond the variant
already selected. For example, AccessMode::Any
means a file has been accessed, but that’s
all we know.
Other
should be used when more detail is available, but cannot be encoded as one of the
defined variants. When specifying Other
, the event attributes should contain an Info
entry with a short string identifying this detail. That string is to be considered part of
the interface of the backend (i.e. a change should probably be breaking).
For example, CreateKind::Other
with an Info("mount")
may indicate the binding of a
mount. The documentation of the particular backend should indicate if any Other
events
are generated, and what their description means.
The EventKind::Any
variant should be used as the “else” case when mapping native kernel
bitmasks or bitmaps, such that if the mask is ever extended with new event types the
backend will not gain bugs due to not matching new unknown event types.
paths: Vec<PathBuf>
Paths the event is about, if known.
If an event concerns two or more paths, and the paths are known at the time of event
creation, they should all go in this Vec
. Otherwise, using the Tracker
attr may be more
appropriate.
The order of the paths is likely to be significant! For example, renames where both ends of the name change are known will have the “source” path first, and the “target” path last.
attrs: EventAttributes
Additional attributes of the event.
Arbitrary data may be added to this field, without restriction beyond the Sync
and
Clone
properties. Some data added here is considered for comparing and hashing, but not
all: at this writing this is Tracker
, Flag
, Info
, and Source
.
Implementations§
Source§impl Event
impl Event
Sourcepub fn need_rescan(&self) -> bool
pub fn need_rescan(&self) -> bool
Returns whether some events may have been missed. If true, you should assume any file or folder might have been modified.
See Flag::Rescan
for more information.
Sourcepub fn tracker(&self) -> Option<usize>
pub fn tracker(&self) -> Option<usize>
Retrieves the tracker ID for an event directly, if present.
Sourcepub fn flag(&self) -> Option<Flag>
pub fn flag(&self) -> Option<Flag>
Retrieves the Notify flag for an event directly, if present.
Sourcepub fn info(&self) -> Option<&str>
pub fn info(&self) -> Option<&str>
Retrieves the additional info for an event directly, if present.
Sourcepub fn add_some_path(self, path: Option<PathBuf>) -> Self
pub fn add_some_path(self, path: Option<PathBuf>) -> Self
Adds a path to the event if the argument is Some.
Sourcepub fn set_tracker(self, tracker: usize) -> Self
pub fn set_tracker(self, tracker: usize) -> Self
Sets the tracker.
Sourcepub fn set_process_id(self, process_id: u32) -> Self
pub fn set_process_id(self, process_id: u32) -> Self
Sets the process id onto the event.
Trait Implementations§
impl Eq for Event
Auto Trait Implementations§
impl Freeze for Event
impl RefUnwindSafe for Event
impl Send for Event
impl Sync for Event
impl Unpin for Event
impl UnwindSafe for Event
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)