10 个版本 (4 个稳定版本)

2.1.0 2022年12月1日
2.0.1 2022年6月24日
2.0.0 2021年3月29日
1.1.0 2021年3月27日
0.0.2 2017年3月17日

113数据结构

Download history 60036/week @ 2024-04-01 64310/week @ 2024-04-08 67004/week @ 2024-04-15 60189/week @ 2024-04-22 57282/week @ 2024-04-29 52720/week @ 2024-05-06 68703/week @ 2024-05-13 56443/week @ 2024-05-20 53317/week @ 2024-05-27 64397/week @ 2024-06-03 62860/week @ 2024-06-10 62330/week @ 2024-06-17 68824/week @ 2024-06-24 60177/week @ 2024-07-01 72558/week @ 2024-07-08 68965/week @ 2024-07-15

每月下载量 272,532
535 个crate中使用 (96 直接使用)

MIT/Apache 许可证

22KB
250

array-init

Crates.io Docs

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中的任何贡献,都将根据上述方式双重许可,没有任何额外的条款或条件。

无运行时依赖