#unix #platform #permissions #traits #exposed #trivial #function

unix_permissions_ext

一个简单的特质,将 UNIX 平台上 PermissionsExt 没有暴露的缺失功能引入到 Permissions 中。

3 个版本

0.1.2 2022 年 10 月 8 日
0.1.1 2022 年 10 月 7 日
0.1.0 2022 年 10 月 7 日

#1175文件系统

GPL-2.0-only

14KB
281

UNIXPermissionsExt

BUILD crates.io docs.rs

一个简单的特质,将 UNIX 平台上 std::os::unix::fs::PermissionsExt 没有暴露的缺失功能引入到 std::fs::Permissions 中。

pub trait UNIXPermissionsExt {
    fn set_uid(&self) -> bool;
    fn set_gid(&self) -> bool;
    fn sticky_bit(&self) -> bool;
    fn readable_by_owner(&self) -> bool;
    fn writable_by_owner(&self) -> bool;
    fn executable_by_owner(&self) -> bool;
    fn readable_by_group(&self) -> bool;
    fn writable_by_group(&self) -> bool;
    fn executable_by_group(&self) -> bool;
    fn readable_by_other(&self) -> bool;
    fn writable_by_other(&self) -> bool;
    fn executable_by_other(&self) -> bool;
    fn stringify(&self) -> String;
}

impl UNIXPermissionsExt for Permissions {
    ...
}

用法

  1. 将其添加到依赖项中

    $ cd $YOUR_PROJECT
    $ cargo add unix_permissions_ext
    
  2. 导入此特质,就像使用标准库一样使用它!

    use std::fs::metadata;
    use unix_permissions_ext::UNIXPermissionsExt;
    
    let metadata = metadata("/usr/bin/passwd").expect("can not fetch metadata");
    let permission = metadata.permissions();
    
    assert!(permission.set_uid());
    println!("Permission: {}", permission.stringify());
    
  3. 要直接使用与 mode_t 类型一起使用的这些函数,请考虑导入 raw_fn 模块

    use unix_permissions_ext::raw_fn::*;
    

贡献

欢迎所有形式的贡献,请随意提交问题或创建拉取请求!

在提交之前进行测试

  1. 通过测试

    $ cargo test
    
  2. 格式化代码

    $ cargo fmt
    

无运行时依赖项