【发布时间】:2017-11-21 13:53:35
【问题描述】:
有时我想从std::io::Reader 中读取一个字节。如果我尝试这样做:
use std::io::{self, Read};
fn main() {
let mut byte: u8 = 0;
io::stdin().read(&mut byte).unwrap();
println!("byte: {}", byte);
}
我收到以下错误(很明显,byte 不是切片):
error[E0308]: mismatched types
--> src/main.rs:6:22
|
6 | io::stdin().read(&mut byte).unwrap();
| ^^^^^^^^^ expected slice, found u8
|
= note: expected type `&mut [u8]`
found type `&mut u8`
有没有办法可以将byte 保留为简单的u8,然后只取一部分,然后我可以将其传递给read()?使这段代码工作的明显方法是使用长度为 1 的数组:
use std::io::{self, Read};
fn main() {
let mut byte: [u8; 1] = [0];
io::stdin().read(&mut byte).unwrap();
println!("byte: {}", byte[0]);
}
但这在其余代码中有点奇怪,使用单个 u8 而不是我必须索引的 [u8; 1] 会更自然。
如果不可能从简单的u8 创建切片,那没关系,但我不知道这是否可能并且想知道。
【问题讨论】:
标签: rust