表达式vec![a, b, c].into_iter()
看起来不必要的长。有更好的吗?
itertools kmerge的文档给出了这个例子:
use itertools::Itertools;
let a = (0..6).step(3);
let b = (1..6).step(3);
let c = (2..6).step(3);
let it = vec![a, b, c].into_iter().kmerge();
itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5]);
当你只想创建一个值的特别迭代器时,还有什么更好的方法吗?也许像iter![a,b,c]
这样的东西(如果iter
被取出来,那么就换个词)。如果这是可能的,我不得不相信有人已经做过了,但是我找不到任何东西。
2条答案
按热度按时间vxf3dgd41#
数组与
Vec
工作得一样好,并且避免了堆分配。也许文档早于Rust 1.53稳定时的版本。
ddarikpa2#
感谢所有的帮助!把所有这些放在一起,我们可以使
[a, b, c].kmerge()
工作:额外的步骤是扩展所有IntoIterator的:
我将在我自己的两个函数中使用这个方法,它们都接受不同数量的相同类型的输入。