在 Rust 中实现读取行或睡眠定时器的一些好方法是什么

What are some good ways to implement a read line or a sleep timer in Rust

我已经完成了我的 CLI,但是它退出得太快以至于人们无法使用它,任何人都知道我将如何在不破坏编译器的情况下在我的 main.rs 中实现代码,哈哈。 我在想也许是一个 for 循环打印,读取和执行,然后重新开始。或者也许是一个读取行的功能,以便它保持足够长的时间来输出显示。

你们会在哪里实现它?谢谢!

      use structopt::StructOpt;
      mod cli;
      mod task;



  use cli::{Action::*, CommandLineArgs};
  use task::Task;

     fn main() {
 // Get the command-line arguments.
   let CommandLineArgs {
    action,
    todo_file,
 } = CommandLineArgs::from_args();

  // Unpack the todo file.
 let todo_file = todo_file.expect("Failed to find todo file");

// Perform the action.
   match action {
    Add { text } => task::add_task(todo_file, 
   Task::new(text)),
    List => task::list_tasks(todo_file), 
    Done { position } => 
 task::complete_task(todo_file, position),

    

   }  
   .expect("Failed to perform action")

  }

从示例来看,您似乎是从命令行获取参数。如果您希望程序等待用户输入一些文本,将该文本解释为命令并 运行 它,然后再次等待输入,直到用户退出程序,那么您可能需要https://doc.rust-lang.org/std/io/struct.Stdin.html or possibly a higher level crate such as https://docs.rs/rustyline/8.0.0/rustyline/

如果您直接使用 stdin,则可以调用 io::stdin().read_line(),它将等到用户输入一行文本并按下回车键后,函数才会 return。然后您可以解析该字符串以获取要执行的操作。 input/parsing/action 代码可以包含在 loop {} 中,其中一个操作可以是退出循环的退出命令。