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
错误类型。