pub trait Parse<'a>: Protocol<'a> {
// Required method
fn parse(
&self,
input: &'a [u8],
direction: Direction,
) -> Result<(&'a [u8], Option<Self::Message>)>;
}
Expand description
Trait for parsing message from an input byte stream.
Required Methods§
sourcefn parse(
&self,
input: &'a [u8],
direction: Direction,
) -> Result<(&'a [u8], Option<Self::Message>)>
fn parse( &self, input: &'a [u8], direction: Direction, ) -> Result<(&'a [u8], Option<Self::Message>)>
Returns a tuple containing the remaining unparsed data and the parsed Message
.
A return value of Result::Ok
indicates that the parser has made progress
and should only be used when the remaining unparsed data is less than the input.
A return value of Result::Err
indicates that no progress was made
and the user may call the parse function again with the same input in
some scenarios:
ErrorKind::Incomplete
: callparse
once more input data is available.
Consequently, Result::Ok(None)
is used to indicate the parser made
progress but needs more data to return a complete Message
. Internal
buffering may occur depending on the implementation.
Result::Err(ErrorKind::Incomplete(_))
must be used instead of Result::Ok(None)
when no progress was made parsing the input.
Object Safety§
This trait is not object safe.