#array #api #checked #no-panic #type #alloc #linear

no-std checked_array

数组类型的检查型 API

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 次下载

BSD-2-Clause OR MIT

28KB
461

BSD-2-Clause License MIT License docs.rs crates.io Download numbers dependency status Travis CI Appveyor CI

checked_array

此软件包提供类似数组的线性集合的 API 抽象,仅导出 检查型 API

为何使用 checked_array

Rust 的 std::vecstd::slice 模块存在一个问题,即当使用错误的参数调用时,它们会隐式地 panic。常见的例子有

  • split_at*
  • rotate*
  • clone_from_slice
  • copy_from_slice
  • 等。

这是一个问题,因为它不仅违反了像“明确优于隐式”这样的安全语言设计原则,而且对于通常使用 OptionResult 来提供可错误处理的 API 的 Rust 来说,也不太典型。

checked_array 通过定义检查型 API 并提供只实现这些检查型 API 的不透明泛型包装器来解决此问题。

checked_arrayalloc

checked_array 的安全保证中有一个例外:如果包装的类型使用 alloc/std::alloc,则 我们无法捕获任何分配错误

为了使用户了解此问题,如果包装的类型会导致 panic 分配错误,我们引入了 WillPanic 错误类型。

无运行时依赖

特性