Rust 新手编程/基础数学测试程序/用户输入
外观
现在,我们想要读取用户输入。在终端中,当用户输入文本时,它会被发送到一个叫做 stdin(标准输入的缩写)的东西。我们再次转向标准 Rust 关于 stdin 的文档。 文档极其重要,因为很少有程序独立存在,而是与其他代码/系统集成,以便更轻松地完成常见的事情。stdin 位于 std::io 中,其中 std 代表标准,io 代表输入/输出。std 是标准库,这意味着它是由设计 Rust 编程语言的同一团队正式设计和记录的。这通常提供了更高的确定性,确保代码安全、高效,以及文档清晰、详细。在这里,我们想编写一个新函数,等待用户输入,并在收到该输入后返回该数字。首先,让我们只接收输入并将其打印到终端
fn wait_for_input() { let mut buffer = String::new(); io::stdin().read_line(&mut buffer).unwrap(); println!("{}", buffer); }
值得注意的是,read_line() 函数接收可变字符串而不是返回字符串。这是因为创建和分配字符串可能会很昂贵,如果我们想追加到现有字符串,则需要额外的分配。因此,接收字符串缓冲区允许用户创建自己的字符串或使用现有字符串,这在没有额外成本的情况下更灵活。它也可能失败并产生错误,该错误以 Result 的形式出现。现在,我们将假设没有错误,并在出现错误时恐慌。然后,我们记得在顶部放置
use std::io;
,并将我们的 main 函数更改为
fn main() { print_question(35, 23, Operator::Subtraction); wait_for_input(); }
现在,如果我们运行它,我们可以看到它不会立即停止,我们可以在终端中输入。当我们在其中键入内容并按回车键时,我们键入的内容会再次重复,表明它正在工作!但是,我们有一个字符串,而我们需要将用户输入作为数字。