首页 > 解决方案 > Rust - 没有实现 `&Result<_, _> == String`

问题描述

我正在尝试制作一个 if 语句,比较一个 String 变量和一个 String 以匹配精确值(不使用match)。这是我的代码:

if &guess.trim().parse() == String::from("quit") { // TODO: Fix this
    println!("Goodbye! The secret number was: {} and you attempted to guess it {} times!", secret_number, tries);
    break;
}

guess是已通过用户输入 ( )String::new()赋值的io::stdin().read_line(&mut guess).expect("Unable to read line");

当我运行代码时,我从上面的代码片段中得到一个错误:

代码错误

有谁知道我为什么会收到此错误以及如何解决?

我曾尝试转换"quit"为,String::from("quit")但似乎错误与 the 有关==,我不确定是什么&Result<_, _>。谢谢!

标签: rust

解决方案


在这种情况下是多余的,但在大多数其他情况下,您可以通过从 中提取实际值并使用它而不是本身来parse()解决错误“未为 Result 实现的东西” 。您的选择是:ResultResult

  • 操作员?提取值并将错误(如果发生)传播给调用者,
  • 发生错误时恐慌的unwrap()orexpect()方法,以及
  • match与or进行模式匹配if let,以在本地处理错误情况。

有关详细信息,请参阅本书章节Result


推荐阅读