pub struct MessageBuf { /* private fields */ }Expand description
A buffer for receiving messages from a channel.
A MessageBuf is essentially a byte buffer and a vector of
handles, but move semantics for “taking” handles requires special handling.
Note that for sending messages to a channel, the caller manages the buffers,
using a plain byte slice and Vec<Handle>.
Implementations§
Source§impl MessageBuf
impl MessageBuf
Sourcepub fn split_mut(&mut self) -> (&mut Vec<u8>, &mut Vec<Handle>)
pub fn split_mut(&mut self) -> (&mut Vec<u8>, &mut Vec<Handle>)
Splits apart the message buf into a vector of bytes and a vector of handles.
Sourcepub fn split(self) -> (Vec<u8>, Vec<Handle>)
pub fn split(self) -> (Vec<u8>, Vec<Handle>)
Splits apart the message buf into a vector of bytes and a vector of handles.
Sourcepub fn ensure_capacity_bytes(&mut self, n_bytes: usize)
pub fn ensure_capacity_bytes(&mut self, n_bytes: usize)
Ensure that the buffer has the capacity to hold at least n_bytes bytes.
Sourcepub fn ensure_capacity_handles(&mut self, n_handles: usize)
pub fn ensure_capacity_handles(&mut self, n_handles: usize)
Ensure that the buffer has the capacity to hold at least n_handles handles.
Sourcepub fn ensure_initialized_bytes(&mut self, n_bytes: usize)
pub fn ensure_initialized_bytes(&mut self, n_bytes: usize)
Ensure that at least n_bytes bytes are initialized (0 fill).
Sourcepub fn shrink_bytes_to_fit(&mut self)
pub fn shrink_bytes_to_fit(&mut self)
Ensure that the allocation for the message’s bytes is as small as possible.
Sourcepub fn bytes(&self) -> &[u8] ⓘ
pub fn bytes(&self) -> &[u8] ⓘ
Get a reference to the bytes of the message buffer, as a &[u8] slice.
Sourcepub fn n_handles(&self) -> usize
pub fn n_handles(&self) -> usize
The number of handles in the message buffer. Note this counts the number
available when the message was received; take_handle does not affect
the count.
Sourcepub fn take_handle(&mut self, index: usize) -> Option<Handle>
pub fn take_handle(&mut self, index: usize) -> Option<Handle>
Take the handle at the specified index from the message buffer. If the
method is called again with the same index, it will return None, as
will happen if the index exceeds the number of handles available.