Я пытаюсь преобразовать поток из reqwest в поток ответа actix, чтобы избежать создания большого Vec
в памяти:
use actix_web::{web, HttpRequest, HttpResponse, Responder};
pub async fn test(
req: HttpRequest
) -> impl Responder {
let request = reqwest::get("https://www.rust-lang.org").await;
if request.is_err() {
println!("Error: {:?}", request.err());
}
let request = request.unwrap();
let stream = request.bytes_stream();
HttpResponse::Ok()
.content_type("text/html")
.streaming(stream)
}
Компилятор дает мне:
--> src/routes/test.rs:97:10
|
97 | .streaming(stream)
| ^^^^^^^^^ the trait `actix_http::error::ResponseError` is not implemented for `reqwest::error::Error`
|
= note: required because of the requirements on the impl of `std::convert::From<reqwest::error::Error>` for `actix_http::error::Error`
= note: required because of the requirements on the impl of `std::convert::Into<actix_http::error::Error>` for `reqwest::error::Error`
Я попробовал все, что мог без удачи:
- создание сквозного
Stream
(даже не компилируя, я не очень хорош в преобразовании типов) - Реализация отсутствующей ошибки для ошибки Reqwest (эта ошибка не опубликована c, поэтому я не смог этого сделать)
- все равно пытается (но не уверен, правильно ли я ее использую)