10 个版本 (4 个稳定版本)
2.1.0 | 2022年12月1日 |
---|---|
2.0.1 | 2022年6月24日 |
2.0.0 | 2021年3月29日 |
1.1.0 |
|
0.0.2 | 2017年3月17日 |
113 在 数据结构 中
每月下载量 272,532
在 535 个crate中使用 (96 直接使用)
22KB
250 行
array-init
array-init
crate 允许您使用初始化闭包初始化数组,该闭包将对每个元素调用一次,直到数组填满。
这样,您在运行初始化器之前不需要默认填充数组。Rust 目前只允许您一次性指定所有初始化器(如 [a(), b(), c(), ...]
),或为 Copy
类型指定一个初始化器(如 [a(); N]
),该初始化器将调用一次,结果将复制过来。
注意,如果初始化失败,不要泄露内存。
示例
// Initialize an array of length 50 containing
// successive squares
let arr: [usize; 50] = array_init::array_init(|i| i * i);
// Initialize an array from an iterator
// producing an array of [1,2,3,4] repeated
let four = [1,2,3,4];
let mut iter = four.iter().copied().cycle();
let arr: [u32; 50] = array_init::from_iter(iter).unwrap();
// Closures can also mutate state. We guarantee that they will be called
// in order from lower to higher indices.
let mut last = 1u64;
let mut secondlast = 0;
let fibonacci: [u64; 50] = array_init::array_init(|_| {
let this = last + secondlast;
secondlast = last;
last = this;
this
});
最低支持Rust版本 (MSRV)
array-init
只会在新的大版本或小版本中增加MSRV,但不会在补丁版本中增加。任何MSRV的变化都将记录在变更日志中。当增加MSRV时,新的Rust版本必须至少发布六个月前。当前的MSRV是 1.51.0。MSRV的变化预计将会保守进行。
许可
根据您的选择,在Apache License,Version 2.0或MIT许可证下许可。
除非您明确说明,否则根据Apache-2.0许可证的定义,您有意提交以包含在此crate中的任何贡献,都将根据上述方式双重许可,没有任何额外的条款或条件。