【发布时间】:2019-08-12 23:43:29
【问题描述】:
我有许多由用户输入指定的 Rust 迭代器,我想同步迭代。
这听起来像是Iterator::zip 之类的工作,但我可能需要将两个以上的迭代器压缩在一起。我查看了itertools::multizip 和itertools::izip,但它们都要求在编译时知道要压缩的迭代器数量。对于我的任务,要压缩在一起的迭代器数量取决于用户输入,因此在编译时无法知道。
我希望有像 Python's zip function 这样的东西,它需要一个可迭代的迭代。我想函数签名可能如下所示:
fn manyzip<T>(iterators: Vec<T>) -> ManyZip<T>
where
T: Iterator
How can I zip more than two iterators? 只回答编译时知道迭代器数量的情况。
我可以使用索引等解决我的特定问题,感觉应该有更好的方法。
【问题讨论】:
-
假设
ManyZip存在,它应该如何实现Iterator——它应该产生Ts,还是Vec<T>s,还是impl Iterator<Item=T>s? -
iterators: Vec<T>— 您希望能够只接受所有完全相同类型的迭代器向量? -
采用迭代器的(可能拥有的)迭代器并让 next() 返回一个迭代器会很好,但我无法计算出假设函数签名上的类型,因为我正在编写问题。