如何返回包含在Result中的impl trait?

问题描述 投票:-3回答:1

我有一个函数可以从文件或Web中读取一些内容,并返回内容。为简单起见,让我们使用以下仅适用于文件:

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特征,以便它不需要立即将完整内容读入内存?

rust traits
1个回答
2
投票

如何返回包含在Result中的impl trait?

通过返回包含在Result中的impl特征:

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

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

也可以看看:

© www.soinside.com 2019 - 2024. All rights reserved.