如何将io:Write流化为actix-web响应?

时间:2019-05-07 13:27:39

标签: rust

我有一些命令行过滤器功能,希望将其放在API后面(像grep这样的服务)。这已经可以与stdin&stdout完美配合,然后我尝试将其放在actix-web后面。

main方法具有此签名fn process<R: io::Read, W: io::Write>(formater: Box<OutputFormater>, reader: R, writer: &mut W)

这在stdin&stdout上可以很好地工作,无论stdin有多大,它都是逐行流式传输,并且不会占用大量内存。

到目前为止,我在actix处理程序中可以实现的最佳想法是:

fn filter(info: Query<Info>) -> impl Responder {
    let csv = reqwest::get(&info.csv_uri).unwrap();
    let formater = get_formater(&info.format);
    let mut buffer: Vec<u8> = vec![];

    process(formater, csv, &mut buffer);

    let output = std::str::from_utf8(&buffer[..]).unwrap();
    output.to_string()
}

是否有一种简单的方法可以流式传输到HttpResponse?也许我必须更改在命令行中的处理方式,使其与actix / futures兼容,作为附带的好处?

0 个答案:

没有答案