3个稳定版本
1.0.2 | 2024年5月23日 |
---|---|
1.0.1 | 2024年4月20日 |
1.0.0 | 2024年4月19日 |
74 在 无标准库
每月下载量 2,520
在 3 个包中使用(通过 foyer-storage)
56KB
489 行
array-util
no_std
array helpers available without nightly.
描述
许多有用的数组和切片方法目前受到nightly功能的限制,尽管它们的通用功能和接口基本上是稳定的。因此,这个crate提供对以下功能的稳定替代方案,通常与当前nightly版本相同的底层实现
使用
用户可以导入一个 Ext
trait(SliceExt
、ArrayExt
或 SliceOfArrayExt
)来引入所需的方法,或者使用裸函数。注意,trait方法有 _ext
后缀,以避免与核心库方法冲突。
use array_util::ArrayExt;
let a = ["1", "2", "3"];
let b = a.try_map_ext(|v| v.parse::<u32>()).unwrap().map(|v| v + 1);
assert_eq!(b, [2, 3, 4]);
let a = ["1", "2a", "3"];
let b = a.try_map_ext(|v| v.parse::<u32>());
assert!(b.is_err());
let a = ["1", "2", "3"];
let b = array_util::try_map(a, |v| v.parse::<u32>()).unwrap().map(|v| v + 1);
assert_eq!(b, [2, 3, 4]);
let a = ["1", "2a", "3"];
let b = array_util::try_map(a, |v| v.parse::<u32>());
assert!(b.is_err());
限制
这些函数没有稳定下来,因为它们依赖于未确定的行为。例如,“对于长度为0的数组是否应该生成编译时错误?”或“Try的关联类型和特质应该是什么?”由于这些问题尚未解决,依赖于该crate在其实现中选择的特定答案可能会使迁移到最终稳定版本更加痛苦。如果您只是调用函数,您可能会没事,但请尽量避免将 Ext
traits用作界限。
许可:MIT
依赖
~66KB