7 个版本 (破坏性)

0.5.0 2024年1月11日
0.4.0 2023年6月30日
0.3.0 2022年11月9日
0.2.0 2022年6月23日
0.0.1 2021年7月14日

#1465 in Rust 模式

每月39次 下载

Apache-2.0…

14KB

open-ambient

使用常量路径打开文件和目录

Github Actions CI Status crates.io page docs.rs docs

ambient-authority 的一个用途是标记代码中可能以受信任输入影响的方式打开文件或其他资源的部分。在编译时已知且为常量的路径是安全的。这个 crate 提供了与 cap-std 一起使用的宏,以常量路径的方式打开文件和目录,并允许在 clippy 扫描中忽略动态 ambient authority 的使用。

要使用它,将 #![deny(clippy::disallowed_method)] 添加到您的代码中,并按照此处描述,复制 clippy.toml 文件,例如

#![deny(clippy::disallowed_method)]

use open_ambient::open_ambient_file;

fn main() {
    let fine = open_ambient_file!("Cargo.toml").unwrap();
    // ... do stuff with `fine`
    drop(fine);

    let risky = std::fs::File::open("Cargo.toml").unwrap();
    // ... do stuff with `risky`
    drop(risky);
}

按照这些说明配置 clippy。上面的代码只有一个错误

error: use of a disallowed method `std::fs::File::open`
  --> test.rs:10:19
   |
10 |     let risky = std::fs::File::open("Cargo.toml").unwrap();
   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |

open_ambient_file! 行没有错误,而 std::fs::File::open 行有错误。

依赖项

~2–11MB
~122K SLoC