【发布时间】:2016-09-06 14:24:12
【问题描述】:
在 Rust 中从 stdin 读取输入非常简单:
use std::io;
let mut some_string = String::new();
let _ = io::stdin().read_line(&mut some_string);
但有时您可能只想丢弃它而不在任何地方确认它或获取缓冲区,例如:
println!("Press Enter to close");
io::stdin().discard_input(); // discard_input() doesn't exist
它可以读取任意数量的字符,直到遇到\n,忽略它并且什么也不返回或io::Result。有没有标准的方法,还是我必须自己实现?我追踪了read_line 的实现到BufRead 实现的read_until,但我不确定从那里开始是否是个好主意。
【问题讨论】:
-
您将无法单独使用
stdin获得“按任意键继续”行为。例如,当使用终端时,您将无法读取用户在用户按下“回车”之前输入的任何内容。 -
Enter 限制非常适合我的需要。但出于好奇,实现这一目标还需要什么?
-
在 Rust 中从
stdin读取也会读取按 Enter 产生的\n字符。所以你可以随时阅读something。您应该将其编辑到您的问题中 - 然后有人可以回答。关于评论中的问题:基本上是平台特定功能。 -
需要一个合适的键盘 API。标准库中没有任何内容,但有各种第三方库。例如glutin。当然,您始终可以使用特定于平台的东西,例如 winapi crate 或适用于您平台的任何等价物。
-
@LukasKalbertodt:例如打电话给
libc的getchar(),对吗?不过,我追求更简单的东西;我编辑了问题。