在 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 {}
中,其中一个操作可以是退出循环的退出命令。
我已经完成了我的 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 {}
中,其中一个操作可以是退出循环的退出命令。