17 个版本
0.4.9 | 2023 年 7 月 2 日 |
---|---|
0.4.7 | 2023 年 3 月 4 日 |
0.4.6 | 2022 年 11 月 14 日 |
0.4.5 | 2022 年 6 月 27 日 |
0.1.0 | 2019 年 10 月 28 日 |
92 在 Rust 模式
57,990 每月下载量
在 41 个 crate (12 个直接使用) 中使用
235KB
4.5K SLoC
Fallible Collections.rs
在 Rust 集合上实现 API,当发生分配错误时返回一个结果。这受到 RFC 2116 的很大启发。
API 目前为 Vec、Box、Arc、Btree 和 Rc 提供了可错误的接口,为原始 Rust 特性实现了 TryClone 特性,并提供了一个可错误的格式宏。
您可以使用 try_clone_derive crate 来为您的自定义类型派生 TryClone。
入门指南
fallible collections 可在 crates.io 上使用。建议在那里查找最新发布的版本,以及文档的最新构建链接。
在最后更新此 README 的时刻,最新发布的版本可以按如下方式使用
将以下依赖项添加到您的 Cargo 清单中... 添加功能 std 和 rust_1_57 以使用稳定的 try_reserve API 和 std HashMap 类型。显然,您不能将其与 'unstable' 功能结合使用。添加集成测试,可以使用 tiny_integration_tester 命令运行。
[dependencies]
fallible_collections = "0.4"
# or
fallible_collections = { version = "0.4", features = ["std", "rust_1_57"] }
...并查看 文档 了解如何使用它。
示例
使用 FallibleBox 接口的示例。
use fallible_collections::FallibleBox;
fn main() {
// this crate an Ordinary box but return an error on allocation failure
let mut a = <Box<_> as FallibleBox<_>>::try_new(5).unwrap();
let mut b = Box::new(5);
assert_eq!(a, b);
*a = 3;
assert_eq!(*a, 3);
}
使用 FallibleVec 接口的示例。
use fallible_collections::FallibleVec;
fn main() {
// this crate an Ordinary Vec<Vec<u8>> but return an error on allocation failure
let a: Vec<Vec<u8>> = try_vec![try_vec![42; 10].unwrap(); 100].unwrap();
let b: Vec<Vec<u8>> = vec![vec![42; 10]; 100];
assert_eq!(a, b);
assert_eq!(a.try_clone().unwrap(), a);
...
}
许可证
以下任一许可证下授权:
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则您提交给工作的任何贡献,如 Apache-2.0 许可证中定义的,将按上述方式双授权,无需任何额外条款或条件。
依赖项
~0–420KB