迭代器有一个跳过前n个元素的skip方法:

let list = vec![1, 2, 3];
let iterator = list.iter();
let skip_iter = iterator.skip(2); //skip the first 2 elements

我找不到只跳过迭代器中第n个元素的方法.我需要自己实现一些东西吗?还是有什么方法我还没有找到?

推荐答案

这似乎是一个非常具体的行动.在标准库或itertools crate 中没有适配器.

尽管如此,它还是很容易实现.可以枚举索引中的每个元素并进行筛选:

iter.enumerate().filter(|&(i, _)| i != n).map(|(_, v)| v)

Playground

Rust相关问答推荐

如何在 struct 中填充缓冲区并同时显示它?

带扫描的铁 rust 使用滤镜

如何go 除铁 rust 中路径组件的第一项和最后一项?

在使用#[NO_STD]时,如何在Rust中收到紧急消息?

无法定义名为&new&的关联函数,该函数的第一个参数不是self

如何修复数组中NewType导致的运行时开销

是否可以在不切换到下一个位置的情况下获得迭代器值:

如何从ruust中的fig.toml中读取?

循环访问枚举中的不同集合

了解Rust';s特征对象和不同函数签名中的生存期注释

如何将带有嵌套borrow /NLL 的 Rust 代码提取到函数中

我们可以在 Rust 切片中使用步骤吗?

Option<&T> 如何实现复制

如何使用泛型满足 tokio 异步任务中的生命周期界限

如何将这些测试放在一个单独的文件中?

为什么我可以同时传递可变和不可变引用?

无法把握借来的价值不够长寿,请解释

RAII 模式的 Rust 解决方案,用于在 new() 和 drop() 上修改另一个对象

在使用大型表达式时(8k 行需要一小时编译),是否可以避免 Rust 中的二次编译时间?

如何用另一个变量向量置换 rust simd 向量?