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

仅持有迭代器可变引用时,能否执行Peek且不推进迭代器?

问题:持有迭代器可变引用时如何实现Peek且不推进迭代器

我有一个接收迭代器可变引用的函数,希望在函数内Peek迭代器以检查是否存在剩余元素。若存在剩余元素,我需要返回错误且不推进迭代器。

最小可复现示例(MRE)

fn process<I>(iter: &mut I) -> bool
where
    I: Iterator<Item = char>,
{
    iter.peekable().peek().is_some()
}

fn main() {
    let mut iter = "Hello, world!".chars().into_iter();
    process(&mut iter);
    assert_eq!(iter.next(), Some('H'));
}

上述代码未达到预期效果。

请问仅持有迭代器的可变引用时,是否可以实现Peek操作?

由于兼容性原因无法修改函数签名,我当前的临时解决办法是在函数返回的Result错误变体中带回iter.next()的结果(若为Some),避免元素丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:36:26