如何返回包装在Result中的impl特性?

时间:2019-03-28 00:43:46

标签: rust traits

我有一个函数,可以从文件或网络中读取某些内容,然后返回内容。为简单起见,让我们使用仅用于文件的以下内容:

fn test() -> Result<Vec<u8>, Error> {
    let mut buf = Vec::new();
    // Does some things that may error ...
    File::open("test.txt")?.read_to_end(&mut buf)?;
    Ok(buf)
}

是否可以编写此函数,使其返回包裹在Read中的Result特征,这样就不必立即将全部内容读入内存中?

1 个答案:

答案 0 :(得分:2)

  

如何返回包装在Result中的impl特性?

通过返回包装在Result 中的impl特质:

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

fn test() -> io::Result<impl Read> {
    let f = File::open("test.txt")?;
    Ok(f)
}

另请参阅: