3 个版本

0.0.2 2023 年 4 月 6 日
0.0.1 2021 年 7 月 13 日
0.0.0 2021 年 4 月 14 日

#675Rust 模式

Download history 43157/week @ 2024-03-14 53297/week @ 2024-03-21 51343/week @ 2024-03-28 42145/week @ 2024-04-04 46502/week @ 2024-04-11 56872/week @ 2024-04-18 54728/week @ 2024-04-25 56792/week @ 2024-05-02 54894/week @ 2024-05-09 68695/week @ 2024-05-16 59808/week @ 2024-05-23 66565/week @ 2024-05-30 53277/week @ 2024-06-06 62137/week @ 2024-06-13 66084/week @ 2024-06-20 54610/week @ 2024-06-27

每月 249,421 次下载
用于 226 个 crate (4 直接)

Apache-2.0…

15KB

ambient-authority

环境权限

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

在基于能力的安全上下文中,环境权限 指的是程序可以执行并与外部世界交互的操作,而这些操作不是通过句柄表示的。

此 crate 定义了一个空函数 ambient_authority,它返回类型为 AmbientAuthority 的值。这是一个空类型,用于函数签名中声明它们使用环境权限。当 API 在所有使用环境权限的函数中使用 AmbientAuthority 时,可以通过扫描对 ambient_authority 的调用快速定位对这些函数的所有调用。

在 API 中使用 AmbientAuthroity 类型

  • 在任何使用环境权限的函数的参数列表末尾添加一个 AmbientAuthority 参数,并在该函数的文档注释中添加一个 # 环境权限 部分,解释它们对环境权限的使用。

  • 从这个 crate 中重新导出 ambient_authority 函数和 AmbientAuthority 类型,以便用户可以轻松使用相同的版本。

  • 确保所有其他 pub 函数避免使用环境权限,包括如静态 AtomicCellRefCellMutexRwLock 或类似状态,以及使用环境权限进行初始化的 once_celllazy_static 状态。

例如,请参阅遵循这些指南的 cap-std crate 的 API。

面向能力的 API 中的一个酷特点是程序不需要是纯的就可以利用它们。话虽如此,对于旨在追求纯度的程序,这个仓库有一个 clippy 配置可以帮助。要使用它

  • 手动确保所有直接依赖项遵循上述约定。

  • clippy.toml 文件复制到顶层源目录,在根模块(main.rs 或 lib.rs)中添加 #![deny(clippy::disallowed_methods)],然后运行 cargo clippy 或等效命令。

无运行时依赖