Struct Writer
pub struct Writer<'a> {
buf: &'a mut [MaybeUninit<u8>],
}Expand description
MQTT wire format writer.
Fields§
§buf: &'a mut [MaybeUninit<u8>]Implementations§
§impl<'a> Writer<'a>
impl<'a> Writer<'a>
pub const fn new_uninit(buf: &'a mut [MaybeUninit<u8>]) -> Self
pub const fn new_uninit(buf: &'a mut [MaybeUninit<u8>]) -> Self
Creates a new writer over the given buffer.
pub const fn into_uninit(self) -> &'a mut [MaybeUninit<u8>]
pub const fn into_uninit(self) -> &'a mut [MaybeUninit<u8>]
Returns the remaining unwritten portion of the buffer.
const unsafe fn split_off_at_mut_unchecked(
&mut self,
index: usize,
) -> &'a mut [MaybeUninit<u8>]
const unsafe fn split_off_at_mut_unchecked( &mut self, index: usize, ) -> &'a mut [MaybeUninit<u8>]
Splits off a prefix of the buffer for writing, returning a mutable slice
to it and advancing self.buf past it.
§Safety
The caller must guarantee that index is a valid split point of
self.buf, and that the returned slice is fully written before any
further use of self.
const unsafe fn write_slice_unchecked(&mut self, bytes: &[u8])
const unsafe fn write_slice_unchecked(&mut self, bytes: &[u8])
Writes a copy of the given slice into the buffer.
§Safety
The caller must guarantee that self.buf has at least bytes.len()
bytes available.
pub const fn write_slice(&mut self, bytes: &[u8]) -> Result<(), EncodeError>
pub const fn write_slice(&mut self, bytes: &[u8]) -> Result<(), EncodeError>
Writes a copy of the given slice into the buffer.
§Errors
Returns EncodeError::InsufficientSpace if the buffer cannot fit the
bytes.
pub const fn u8(&mut self, value: u8) -> Result<(), EncodeError>
pub const fn u8(&mut self, value: u8) -> Result<(), EncodeError>
pub const fn u16(&mut self, value: u16) -> Result<(), EncodeError>
pub const fn u16(&mut self, value: u16) -> Result<(), EncodeError>
Writes a big-endian u16.
§Errors
Returns EncodeError::InsufficientSpace if the buffer has fewer than
2 bytes free.
pub const fn u32(&mut self, value: u32) -> Result<(), EncodeError>
pub const fn u32(&mut self, value: u32) -> Result<(), EncodeError>
Writes a big-endian u32.
§Errors
Returns EncodeError::InsufficientSpace if the buffer has fewer than
4 bytes free.
pub const fn vbi(&mut self, value: Vbi) -> Result<(), EncodeError>
pub const fn vbi(&mut self, value: Vbi) -> Result<(), EncodeError>
Writes a Variable Byte Integer (1–4 bytes).
§Errors
Returns EncodeError::InsufficientSpace if the buffer cannot fit the
encoded value.
pub const fn binary(&mut self, bytes: &MqttBytes) -> Result<(), EncodeError>
pub const fn binary(&mut self, bytes: &MqttBytes) -> Result<(), EncodeError>
Writes a length-prefixed binary data.
§Errors
Returns EncodeError::InsufficientSpace if the buffer cannot fit the
length prefix and data.
pub const fn string(&mut self, s: &MqttStr) -> Result<(), EncodeError>
pub const fn string(&mut self, s: &MqttStr) -> Result<(), EncodeError>
Writes a length-prefixed UTF-8 string with additional MQTT validation.
§Errors
Returns EncodeError::InsufficientSpace if the buffer cannot fit the
string.