mirror of
https://github.com/actix/actix-web.git
synced 2024-12-18 06:06:36 +00:00
26 lines
721 B
Rust
26 lines
721 B
Rust
|
use std::io;
|
||
|
|
||
|
use bytes::BufMut;
|
||
|
|
||
|
/// An `io::Write`r that only requires mutable reference and assumes that there is space available
|
||
|
/// in the buffer for every write operation or that it can be extended implicitly (like
|
||
|
/// `bytes::BytesMut`, for example).
|
||
|
///
|
||
|
/// This is slightly faster (~10%) than `bytes::buf::Writer` in such cases because it does not
|
||
|
/// perform a remaining length check before writing.
|
||
|
pub(crate) struct MutWriter<'a, B>(pub(crate) &'a mut B);
|
||
|
|
||
|
impl<'a, B> io::Write for MutWriter<'a, B>
|
||
|
where
|
||
|
B: BufMut,
|
||
|
{
|
||
|
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
|
||
|
self.0.put_slice(buf);
|
||
|
Ok(buf.len())
|
||
|
}
|
||
|
|
||
|
fn flush(&mut self) -> io::Result<()> {
|
||
|
Ok(())
|
||
|
}
|
||
|
}
|