使用字节库将字节转换为 Buf

Convert Bytes to Buf with bytes library

我正在尝试将 reqwest 文件下载的结果转换为实现 Read trait. Reqwest has given back a Bytes 类型的类型。字节似乎没有实现 Read 特性,但在同一个库中有 Buf 确实实现了 Read.

我一直在尝试找到一种方法将 Bytes 转换为 Buf 但我还没有找到方法。如果我想获得实现 Read 的东西并且有没有办法通过将 Bytes 转换为 Buf 来做到这一点,我是否以正确的方式进行?

注意 Bytes already implements Buf。但是你需要在作用域中拥有特性才能使用它:

fn main() {
    use bytes::Bytes;
    use bytes::Buf;

    let mut buf = Bytes::from("Hello world");
    assert_eq!(b'H', buf.get_u8());
}

Playground

考虑到这一点,如果您需要 Read object, you can call the method reader 来获得这样的类型:

fn main() {
    use bytes::Bytes;
    use bytes::Buf;
    use std::io::Read;
    
    let mut buf = Bytes::from("Hello world");
    let mut reader: Box<dyn Read> = Box::new(buf.reader()) as Box<dyn Read>;
}

Playground