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}