diff --git a/crates/lune-std-net/src/shared/response.rs b/crates/lune-std-net/src/shared/response.rs index 9332479..df3a183 100644 --- a/crates/lune-std-net/src/shared/response.rs +++ b/crates/lune-std-net/src/shared/response.rs @@ -2,7 +2,7 @@ use futures_lite::prelude::*; use http_body_util::BodyStream; use hyper::{ - body::{Bytes, Incoming}, + body::{Body, Bytes, Incoming}, HeaderMap, Response as HyperResponse, }; @@ -23,8 +23,10 @@ impl Response { ) -> LuaResult { let (parts, body) = incoming.into_parts(); + let size = body.size_hint().lower() as usize; + let buffer = Vec::::with_capacity(size); let body = BodyStream::new(body) - .try_fold(Vec::::new(), |mut body, chunk| { + .try_fold(buffer, |mut body, chunk| { if let Some(chunk) = chunk.data_ref() { body.extend_from_slice(chunk); }