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

Rust迭代双字符串时while let多绑定报错的解决方法

修复Rust并行迭代字符串的错误

你遇到的错误是因为while let中用&&连接两个let Some的写法是Rust尚未稳定的语法,目前无法直接使用。有两种更简洁且符合稳定Rust规范的写法:

方法一:使用loop+match手动处理迭代器结果

通过循环内匹配两个迭代器的next()结果,仅当两者都有值时执行逻辑,否则退出循环:

fn main() {
    let s1 = String::from("abacde");
    let s2 = String::from("123456");
    let mut iter1 = s1.chars();
    let mut iter2 = s2.chars();

    loop {
        match (iter1.next(), iter2.next()) {
            (Some(ch1), Some(ch2)) => {
                println!("ch1: {:?}, ch2: {:?}", ch1, ch2);
            }
            // 任意一个迭代器耗尽就退出循环
            _ => break,
        }
    }
}

方法二:使用zip方法(推荐)

Rust的迭代器提供了zip方法,专门用于将两个迭代器合并为一个元组迭代器,当其中任意一个迭代器耗尽时自动停止,这是处理并行迭代最简洁的方式:

fn main() {
    let s1 = String::from("abacde");
    let s2 = String::from("123456");

    for (ch1, ch2) in s1.chars().zip(s2.chars()) {
        println!("ch1: {:?}, ch2: {:?}", ch1, ch2);
    }
}

两种方法都能避免使用索引带来的效率问题,且符合Rust的稳定语法规范,其中zip方法更符合Rust的迭代器设计哲学,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:55:05