有时我想从std::io::Read
er中读取一个字节.如果我try 这样做:
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
中创建一个切片,那没关系,但我不知道是否可能,我想知道.