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

Rust嵌套遍历两个Vec出现编译错误,如何实现字符逐一对比计数?

编译错误原因
  • counter为默认不可变绑定,无法直接修改值,且Rust不支持++自增语法
  • 直接用for x in vec遍历会转移vec的所有权,内层循环第一次执行后apple_vec就被消费,后续外层循环访问会报错
  • 嵌套循环的逻辑不符合逐位对比的需求,当前逻辑是两个集合的所有元素两两配对遍历,不是同索引位置对比
最终实现代码

你要的逐位对比统计不匹配次数的实现如下:

fn main() {
    let apple = String::from("apple");
    let accle = String::from("accle");

    let mut counter = 0;
    // 直接对两个字符串的字符迭代器按位配对遍历,无需提前转Vec
    for (a_char, b_char) in apple.chars().zip(accle.chars()) {
        if a_char != b_char {
            counter += 1;
        }
    }
    // 如果需要将两个字符串长度不同的部分也计入不匹配次数,放开下面的注释即可
    // counter += apple.chars().count().abs_diff(accle.chars().count());

    println!("counter is {}", counter);
}
核心修改点
  • 给counter添加mut关键字声明为可变绑定,使用+= 1代替不支持的++语法
  • 用zip方法将两个字符迭代器按位配对,直接遍历同位置的两个元素,避免嵌套循环逻辑错误
  • 去掉了不必要的Vec转换步骤,直接对字符串的chars()迭代器操作,性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:27:01