从Rust中的标准输入读取原始字节

时间:2018-11-29 18:55:26

标签: rust

我试图从Rust的标准输入中读取字节。下面的代码非常适合由常规字符组成的行,但是对于没有关联字符(例如0xe0)的原始字节,这会使程序崩溃。 documentation表示它将终止于换行符,但未提及非字符字节的任何问题。

编辑:我实际上错过了,它确实说所有字节都必须是UTF-8编码的-我可以使用另一个功能来做到这一点吗?

    let mut input = String::new();
    io::stdin().read_line(&mut input)
        .ok()
        .expect("Couldn't read line");   

1 个答案:

答案 0 :(得分:1)

事实证明,Stdin实现了Read特性,因此我能够使用bytes方法:

for i in io::stdin().bytes() {
    println!("read byte {}", i.unwrap());
}

通过检查每个字节直到它成为所需的字节,可以打破此循环。