如何从具有最大输入长度的标准输入中读取一行?

时间:2019-08-19 23:45:00

标签: rust

要阅读Stdin中的一行,我可以

let mut stdin = std::io::stdin();
let mut input = String::new();
stdin.read_line(&mut input).unwrap();

要从Stdin中读取最大长度,我可以做

const MAX_LENGTH: u64 = 256;
let mut stdin = std::io::stdin();
let mut input = String::new();
stdin.take(MAX_LENGTH).read(&mut input).unwrap();

我想要的是以上两个要求的结合。从stdin读取一行,如果输入长于MAX_LENGTH,则其余部分将被丢弃。

1 个答案:

答案 0 :(得分:2)

read_line不是std::io::Read的成员,而是std::io::BufRead的成员,尽管stdin确实实现了后者,但返回stdin.take()(类型为{ {1}})。

但是您可以使用std::io::Take<_>轻松地将任何Read转换为BufRead

std::io::BufReader