在超级响应中发送特定字节数的最佳方式是什么?

What is the best way to send a specific number of bytes in a hyper response?

我希望在我正在制作的超级服务器中发送特定数量的字节(例如 1GB)作为非分块响应。我是 Rust 的新手,我认为我可以将 Rust 等同于字节切片,但这并没有奏效。想知道完成此任务的最佳方法是什么。

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

这是一个内容长度为 0 的 return 响应,但我希望它 return 64 字节。

BytesMut::with_capacity 不会用任何东西填充缓冲区。它只预分配一个 64 字节的缓冲区,但将长度保留为零。 documentation 表明了这一点,连同一个代码示例表明缓冲区仍然是空的,除非你向它推送一些东西。

如果您想发送 64 个字节并且不关心它们是什么,请尝试 zero-filled Vec:

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