You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

有没有比vec![a,b,c].into_iter()更简洁的临时迭代器创建方式?

优化vec![a, b, c].into_iter()的简洁写法

最直接的优化方案是用栈上数组替代堆分配的Vec,写成[a, b, c].into_iter()——既省去了堆内存分配的开销,语法上也更简洁,完全兼容kmerge的使用场景。

修改后的示例代码:

use itertools::Itertools;

let a = (0..6).step(3);
let b = (1..6).step(3);
let c = (2..6).step(3);
let it = [a, b, c].into_iter().kmerge();
itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5]);

如果你想要类似iter![a,b,c]的宏写法,也可以自己定义一个极简宏,实现完全相同的效果:

macro_rules! iter {
    ($($elem:expr),+ $(,)?) => {
        [$($elem),+].into_iter()
    };
}

// 使用方式
let it = iter![a, b, c].kmerge();

注意:如果你的迭代器数量是动态的(编译期无法确定),那还是需要用Vec;但对于固定数量的几个迭代器,数组写法是性能和简洁度都最优的选择。

内容的提问来源于stack exchange,提问作者Carl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:39:07