Каков наилучший способ отправить определенное количество байт в гиперрезультате?

#rust #hyper

#Ржавчина #гипер

Вопрос:

Я хочу отправить определенное количество байт (например, 1 ГБ) в виде ответа без фрагментов на создаваемом мной гипер-сервере. Я новичок в Rust и подумал, что мог бы использовать Rust-эквивалент byte slice, но это не сработало. Интересно, каков наилучший способ добиться этого.

 let mut bytes = BytesMut::with_capacity(64).freeze();
Ok(Response::new(Body::from(bytes)))
  

Это возвращает ответ с длиной содержимого 0, но я хочу, чтобы он возвращал 64 байта.

Ответ №1:

BytesMut::with_capacity буфер ничем не заполняется. Он только предварительно выделяет буфер в 64 байта, но оставляет длину равной нулю. В документации указано это вместе с примером кода, который показывает, что буфер по-прежнему пуст, если вы не добавите в него что-либо.

Если вы хотите отправить 64 байта и вам все равно, какие они, попробуйте заполнить нулем Vec :

 Ok(Response::new(Body::from(vec![0; 64])))