pub trait ParseBufferMut: ParseBuffer + ContiguousBufferMut {
// Required method
fn parse_with_mut<'a, ParseArgs, P: ParsablePacket<&'a mut [u8], ParseArgs>>(
&'a mut self,
args: ParseArgs,
) -> Result<P, P::Error>;
// Provided method
fn parse_mut<'a, P: ParsablePacket<&'a mut [u8], ()>>(
&'a mut self,
) -> Result<P, P::Error> { ... }
}Expand description
A ParseBuffer which provides mutable access to its contents.
While a ParseBuffer allows the ranges covered by its prefix, body, and
suffix to be modified, it only provides immutable access to their contents.
A ParseBufferMut, on the other hand, provides mutable access to the
contents of its prefix, body, and suffix.
§Notable implementations
ParseBufferMut is implemented for mutable byte slices - &mut [u8].
Mutable byte slices do not implement GrowBuffer or GrowBufferMut;
once bytes are consumed from their bodies, those bytes are discarded and
cannot be recovered.
Required Methods§
Sourcefn parse_with_mut<'a, ParseArgs, P: ParsablePacket<&'a mut [u8], ParseArgs>>(
&'a mut self,
args: ParseArgs,
) -> Result<P, P::Error>
fn parse_with_mut<'a, ParseArgs, P: ParsablePacket<&'a mut [u8], ParseArgs>>( &'a mut self, args: ParseArgs, ) -> Result<P, P::Error>
Parses a mutable packet with arguments.
parse_with_mut is like parse_mut, but it accepts arguments to pass
to P::parse_mut.
Provided Methods§
Sourcefn parse_mut<'a, P: ParsablePacket<&'a mut [u8], ()>>(
&'a mut self,
) -> Result<P, P::Error>
fn parse_mut<'a, P: ParsablePacket<&'a mut [u8], ()>>( &'a mut self, ) -> Result<P, P::Error>
Parses a mutable packet from the body.
parse_mut is like ParseBuffer::parse, but instead of calling
P::parse on a BufferView, it calls P::parse_mut on a
BufferViewMut. The effect is that the parsed packet can contain
mutable references to the buffer. This can be useful if you want to
modify parsed packets in-place.
Depending on the implementation of P::parse_mut, the contents
of the buffer may be modified during parsing.
See the BufferViewMut and ParsablePacket documentation for more
details.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.