http_file/
buf.rs

1use core::fmt;
2
3use bytes::{Bytes, BytesMut};
4
5pub(super) struct BytesMutWriter(BytesMut);
6
7impl BytesMutWriter {
8    pub(super) fn with_capacity(cap: usize) -> Self {
9        Self(BytesMut::with_capacity(cap))
10    }
11
12    pub(super) fn freeze(self) -> Bytes {
13        self.0.freeze()
14    }
15}
16
17impl fmt::Write for BytesMutWriter {
18    fn write_str(&mut self, s: &str) -> fmt::Result {
19        self.0.extend_from_slice(s.as_bytes());
20        Ok(())
21    }
22}
23
24macro_rules! buf_write_header {
25    ($cap:expr, $($arg:tt)*) => {{
26        let mut buf = crate::buf::BytesMutWriter::with_capacity($cap);
27        use ::core::fmt::Write;
28        write!(&mut buf, $($arg)*).unwrap();
29        ::http::HeaderValue::from_maybe_shared(buf.freeze()).unwrap()
30    }};
31}
32
33pub(super) use buf_write_header;