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

Rust代码报错expected {&unknown}, found String,如何解决字符串比较问题?

Rust字符串比较错误的解决方法

你的代码存在三个问题,直接导致了报错和逻辑异常:

  • 类型不匹配:eq方法要求参数为引用类型(&str或&String),但你直接传入了String类型的word,这就是报错"expected {&unknown}, found String"的核心原因。
  • 拼写错误:except是拼写失误,Rust中正确的错误处理方法是expect。
  • 输入累积问题:read_line会把用户输入(包括换行符)追加到guess中,不主动清空的话,guess内容会越来越长,永远无法和目标字符串匹配。

修正后的代码

use std::io;

fn main() {
    let mut guess = String::new();
    let word: String = String::from("Hello, world");

    for _ in 1..10 {
        guess.clear(); // 每次循环清空输入缓冲区
        io::stdin()
            .read_line(&mut guess)
            .expect("failed to read line"); // 修正拼写错误
        
        // 去除输入末尾的换行符,否则会因多余字符匹配失败
        let guess_trimmed = guess.trim();
        println!("{}", guess_trimmed == &word); // 用==运算符自动处理引用,更简洁
    }

    println!("Game is over");
}

关键说明

  • 使用==运算符比直接调用eq更直观,Rust会自动处理字符串的引用转换,彻底规避类型不匹配问题。
  • 调用trim()移除输入字符串末尾的换行符(read_line会读取用户按下的回车),否则即使输入内容正确,也会因多余字符匹配失败。
  • 每次循环执行guess.clear()清空之前的输入,确保每次都是新的用户输入参与比较。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:45:30