#array #utilities #generics #embedded

无std array-util

无需nightly即可使用no_std数组辅助工具

3个稳定版本

1.0.2 2024年5月23日
1.0.1 2024年4月20日
1.0.0 2024年4月19日

74无标准库

Download history 18/week @ 2024-04-23 44/week @ 2024-04-30 236/week @ 2024-05-07 222/week @ 2024-05-14 411/week @ 2024-05-21 553/week @ 2024-05-28 888/week @ 2024-06-04 754/week @ 2024-06-11 794/week @ 2024-06-18 587/week @ 2024-06-25 1153/week @ 2024-07-02 621/week @ 2024-07-09 817/week @ 2024-07-16 478/week @ 2024-07-23 540/week @ 2024-07-30 583/week @ 2024-08-06

每月下载量 2,520
3 个包中使用(通过 foyer-storage

MIT许可

56KB
489

array-util

no_std array helpers available without nightly.

描述

许多有用的数组和切片方法目前受到nightly功能的限制,尽管它们的通用功能和接口基本上是稳定的。因此,这个crate提供对以下功能的稳定替代方案,通常与当前nightly版本相同的底层实现

使用

用户可以导入一个 Ext trait(SliceExtArrayExtSliceOfArrayExt)来引入所需的方法,或者使用裸函数。注意,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