5 个版本
| 0.1.5 | 2021 年 3 月 20 日 | 
|---|---|
| 0.1.4 | 2021 年 3 月 17 日 | 
| 0.1.3 | 2021 年 3 月 17 日 | 
| 0.1.1 | 2021 年 3 月 17 日 | 
| 0.1.0 | 2021 年 3 月 9 日 | 
#2865 in Rust 模式
每月 31 次下载
28KB
461 行
checked_array
此软件包提供类似数组的线性集合的 API 抽象,仅导出 检查型 API。
为何使用 checked_array
Rust 的 std::vec 和 std::slice 模块存在一个问题,即当使用错误的参数调用时,它们会隐式地 panic。常见的例子有
- split_at*
- rotate*
- clone_from_slice
- copy_from_slice
- 等。
这是一个问题,因为它不仅违反了像“明确优于隐式”这样的安全语言设计原则,而且对于通常使用 Option 或 Result 来提供可错误处理的 API 的 Rust 来说,也不太典型。
checked_array 通过定义检查型 API 并提供只实现这些检查型 API 的不透明泛型包装器来解决此问题。
checked_array 和 alloc
checked_array 的安全保证中有一个例外:如果包装的类型使用 alloc/std::alloc,则 我们无法捕获任何分配错误。
为了使用户了解此问题,如果包装的类型会导致 panic 分配错误,我们引入了 WillPanic 错误类型。