2 个版本
0.0.5 | 2019年6月7日 |
---|---|
0.0.4 | 2019年6月7日 |
#103 in #初始化
10KB
146 行
par-array-init
par-array-init
crate 允许您使用初始化闭包并行初始化数组,该闭包将在填充数组时被调用。
此 crate 与 crate array-init 的 api 相似,但初始化是在并行中执行的。与 array-init
不同的重要之处在于,初始化顺序不是确定的,不应依赖于它。
并行化是通过使用 rayon 和它的 ParallelIterator
api 实现的。
示例
extern crate par_array_init;
extern crate rayon;
use par_array_init::{par_array_init, from_par_iter};
// Initialize an array of length 10 containing successive squares
let arr: [usize; 50] = par_array_init(|i| i * i);
// Initialize an array from an iterator producing an array of 34 repeated
let mut iter = rayon::iter::repeat(34u32).take(50);
let arr: Option<[u32; 50]> = from_par_iter(iter);
lib.rs
:
par_array_init
crate 允许您使用初始化闭包并行初始化数组,该闭包将在填充数组时被调用。
此 crate 与 crate (array-init)https://crates.io/crates/array-init 的 api 相似,但初始化是在并行中执行的。与 array-init
不同的重要之处在于,初始化顺序不是确定的,不应依赖于它。
并行化是通过使用 (rayon)https://https://crates.io/crates/rayon 和它的 ParallelIterator
api 实现的。
示例
// Initialize an array of length 10 containing successive squares
let arr: [usize; 50] = par_array_init::par_array_init(|i| i * i);
// Initialize an array from an iterator producing an array filled with 34's
let mut iter = rayon::iter::repeat(34u32).take(50);
let arr: Option<[u32; 50]> = par_array_init::from_par_iter(iter);
依赖项
~1.5MB
~26K SLoC