rsincronlib/
events.rs

1use std::str::FromStr;
2
3use inotify::WatchMask;
4
5#[derive(Debug)]
6pub struct MaskWrapper(pub WatchMask);
7
8impl FromStr for MaskWrapper {
9    type Err = String;
10    fn from_str(s: &str) -> Result<Self, Self::Err> {
11        match s {
12            "IN_ACCESS" => Ok(MaskWrapper(WatchMask::ACCESS)),
13            "IN_CLOSE_WRITE" => Ok(MaskWrapper(WatchMask::CLOSE_WRITE)),
14            "IN_CLOSE_NOWRITE" => Ok(MaskWrapper(WatchMask::CLOSE_NOWRITE)),
15            "IN_CREATE" => Ok(MaskWrapper(WatchMask::CREATE)),
16            "IN_DELETE" => Ok(MaskWrapper(WatchMask::DELETE)),
17            "IN_DELETE_SELF" => Ok(MaskWrapper(WatchMask::DELETE_SELF)),
18            "IN_MODIFY" => Ok(MaskWrapper(WatchMask::MODIFY)),
19            "IN_MOVE_SELF" => Ok(MaskWrapper(WatchMask::MOVE_SELF)),
20            "IN_MOVED_FROM" => Ok(MaskWrapper(WatchMask::MOVED_FROM)),
21            "IN_MOVED_TO" => Ok(MaskWrapper(WatchMask::MOVED_TO)),
22            "IN_OPEN" => Ok(MaskWrapper(WatchMask::OPEN)),
23            "IN_ALL_EVENTS" => Ok(MaskWrapper(WatchMask::ALL_EVENTS)),
24            _ => Err(String::from("invalid descriptor")),
25        }
26    }
27}