#[cfg(feature = "alloc")]
use alloc::vec::Vec;
pub trait Write {
fn write(&mut self, buf: &[u8]);
fn reserve(&mut self, additional: usize);
}
#[cfg(feature = "alloc")]
impl Write for Vec<u8> {
#[inline]
fn write(&mut self, buf: &[u8]) {
self.extend_from_slice(buf);
}
#[inline]
fn reserve(&mut self, additional: usize) {
Vec::reserve(self, additional);
}
}
#[cfg(feature = "alloc")]
impl Write for &mut Vec<u8> {
#[inline]
fn write(&mut self, buf: &[u8]) {
self.extend_from_slice(buf);
}
#[inline]
fn reserve(&mut self, additional: usize) {
Vec::reserve(self, additional);
}
}
#[cfg(feature = "bytes")]
impl Write for bytes::BytesMut {
#[inline]
fn write(&mut self, buf: &[u8]) {
self.extend_from_slice(buf);
}
#[inline]
fn reserve(&mut self, additional: usize) {
bytes::BytesMut::reserve(self, additional);
}
}
#[cfg(feature = "bytes")]
impl Write for &mut bytes::BytesMut {
#[inline]
fn write(&mut self, buf: &[u8]) {
self.extend_from_slice(buf);
}
#[inline]
fn reserve(&mut self, additional: usize) {
bytes::BytesMut::reserve(self, additional);
}
}