繁体   English   中英

Rust 编程 - 尝试将用户输入与文件中的行进行比较

[英]Rust Programming - Trying to compare user input to lines from a file

所以我试图将用户输入与来自单独文件名 fruits.txt 的行进行比较。 我相信我大部分时间都在工作,但我遇到了这个错误:

error[E0658]: use of unstable library feature 'option_result_contains'
  --> src/main.rs:19:20
   |
19 |             s if s.contains(&ask) => println!("{} is a fruit!", ask),
   |                    ^^^^^^^^
   |
   = note: see issue #62358 <https://github.com/rust-lang/rust/issues/62358> for more information

For more information about this error, try `rustc --explain E0658`.
error: could not compile `learn_arrays` due to previous error

我已经尝试了几种方法来匹配 rust 中的它,这是最接近的方法,它不会抱怨我正在尝试将字符串与任何类型的行匹配。 这是它的样子

  use std::fs::File;
  use std::io::{BufReader, BufRead, Error, stdin};
 
  fn main() -> Result<(), Error>{
      let path = "fruits.txt";
 
      let input = File::open(path)?;
      let buffered = BufReader::new(input);
 
      let mut ask = String::new();
      stdin()
          .read_line(&mut ask)
          .expect("Failed to read line");
 
      let ask: String = ask.trim().parse().expect("Please type a valid string!");
 
      for line in buffered.lines() {
          match line {
              s if s.contains(&ask) => println!("{} is a fruit!", ask),
              _ => println!("{} is either not in the list or not a fruit", ask),
          }
      }
 
      Ok(())
 }

有没有一种方法可以让我使用不稳定的特性,或者是否有另一种更好的方法来比较用户输入和文件中的行。

我能够通过更改我尝试将输入与以下内容匹配的部分来解决问题:

let mut found = false;

println!("Result");

for line in buffered.lines() {
         let s = line.unwrap();
         if s.find(&ask).is_some() {
            println!("{} is a fruit!", ask);
            found = true;
            break;
         }
     }

     if !found {
         println!("{} is either not in the list or not a fruit", ask)
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM