#collection #fallible

no-std fallible_collections

一个 crate,为 std 集合添加了可错误分配的 API

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 日

92Rust 模式

Download history 11464/week @ 2024-04-16 12854/week @ 2024-04-23 12480/week @ 2024-04-30 10283/week @ 2024-05-07 13326/week @ 2024-05-14 20236/week @ 2024-05-21 14559/week @ 2024-05-28 16605/week @ 2024-06-04 18361/week @ 2024-06-11 13526/week @ 2024-06-18 18518/week @ 2024-06-25 13394/week @ 2024-07-02 14579/week @ 2024-07-09 11086/week @ 2024-07-16 15223/week @ 2024-07-23 13173/week @ 2024-07-30

57,990 每月下载量
41 个 crate (12 个直接使用) 中使用

MIT/Apache

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 许可证中定义的,将按上述方式双授权,无需任何额外条款或条件。

依赖项

~0–420KB