相关疑难解决方法(0)

我可以创建单个字节的切片(u8)吗?

有时候我想从std::io::Reader 读取一个字节.如果我尝试这样做:

use std::io::{self, Read};

fn main() {
    let mut byte: u8 = 0;
    io::stdin().read(&mut byte).unwrap();
    println!("byte: {}", byte);
}
Run Code Online (Sandbox Code Playgroud)

我得到以下错误(这是明确的,因为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`
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以保持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]);
}
Run Code Online (Sandbox Code Playgroud)

但是在整个代码中,这有点奇怪的感觉,使用单个u8 …

rust

7
推荐指数
2
解决办法
1362
查看次数

如何将任何类型的引用转换为对长度为 1 的数组的引用?

我有一个类型的实例&T。我如何将其转换为&[T; 1]?类似于std::slice::from_ref,除了它应该返回一个数组,而不是一个切片。

rust

6
推荐指数
1
解决办法
94
查看次数

标签 统计

rust ×2