#iterator #exhaustive #single #behind #consumption #interleaver #interleaving

interleave

一个任意迭代器交错器,用于彻底消费迭代器。每个迭代器都保证不会比任何其他迭代器落后超过一个 next() 调用。

7 个版本 (2 个稳定)

使用旧的 Rust 2015

1.0.1 2016 年 7 月 30 日
0.2.4 2016 年 6 月 28 日

#4#exhaustive

每月 24 次下载
用于 2 个 crate(通过 tile_net

GPL-3.0 许可证

6KB
140

interleave-rs

Interleave 是一个宏,允许您创建一个交错其输入迭代器的迭代器。

创建这个库的原因是 Itertools 只提供二进制交错。

行为

在交错器返回 None 之前,所有迭代器都会被耗尽(返回 None)。


lib.rs:

此 crate 允许您创建任意交错迭代器。每个迭代器都保证不会比最先进的迭代器落后超过一个 next() 调用。交错宏是任意阶的。

#[macro_use]
extern crate interleave;
fn main() {
	use interleave::{IterList, MultiIter};
	let iter = interleave!(1..5, 9..12, -3..2);
	for i in iter {
		println!("{:?}", i);
	}
}

迭代器返回的类型也可以强制指定

#[macro_use]
extern crate interleave;
fn main() {
	use interleave::{IterList, MultiIter};
	let iter = interleave!(i8; 1..5, 9..12, -3..2);
	for i in iter {
		println!("{:?}", i);
	}
}

大部分信息可以在示例或测试模块中找到。

依赖项

~0–700KB
~20K SLoC