path_permission/lib.rs
1/*!
2# Path Permission
3
4在已有一个确定的路径时,可依此库来获取路径文件的权限。
5它为`Path(Buf)`提供了一个名为`PathPermission`的特性(trait),在使用`Path`类型
6时,可以此获取其文件权限,是否可读(r)、可写(w)、可执行(x)。
7目前只支持 *Unix* 类系统。
8
9## 示例
10```rust
11use std::path::Path;
12
13extern crate path_permission;
14
15use path_permission::*;
16
17let path = Path::new("src/lib.rs");
18
19assert_eq!(path.is_readable().unwrap(), true);
20assert_eq!(path.is_writable().unwrap(), true);
21assert_eq!(path.is_excutable().unwrap(), false);
22assert_eq!(path.is_removable().unwrap(), true);
23
24assert_eq!(path.check_access(0o644).unwrap(), true);
25assert_eq!(path.get_access().unwrap(), "0644");
26
27assert_eq!(path.chmod(0o640).unwrap(), true);
28// 注意,这里已经格式化为字符串
29assert_eq!(path.get_access().unwrap(), "0640");
30assert_eq!(path.chmod(0o644).unwrap(), true);
31
32let new_path = Path::new("a/b/d/e/f");
33
34assert_eq!(new_path.is_creatable().unwrap(), true);
35```
36
37## 注意
38在使用时需注意:
39 * 当返回值为Ok(false)时,意为无查看此路径的权限,即可能此路径不存在(从起始
40路径开始,至无访问权限的子级路径,是存在的)。
41 * 如无必须,不太建议使用相对路径,可使用
42[path-calculate](https://crates.io/crates/path-calculate)将路径转换为绝对路径。
43 * get_access() 所返回的权限已被格式化为字符串。
44
45## 后续计划
46计划支持 rwx 字符串输出、权限变更方法。
47
48## 感谢
49此项目部分代码,来源自项目[permissions](https://crates.io/crates/permissions)。
50
51*/
52#[cfg(unix)]
53pub mod unix;
54
55#[cfg(unix)]
56pub use unix::*;
57
58//TODO Windows