Skip to main content

SplitBytes

Derive Macro SplitBytes 

Source
#[derive(SplitBytes)]
Available on crate feature unstable-new only.
Expand description

Deriving SplitBytes automatically.

SplitBytes can be derived on structs (not enums or unions). All fields must implement SplitBytes.

Here’s a simple example:

#[derive(ParseBytes)]
struct Foo<T> {
    a: U32,
    b: Bar<T>,
}


// The generated impl with 'derive(SplitBytes)':
impl<'bytes, T> SplitBytes<'bytes> for Foo<T>
where
    U32: SplitBytes<'bytes>,
    Bar<T>: SplitBytes<'bytes>,
{
    fn split_bytes(
        bytes: &'bytes [u8],
    ) -> Result<(Self, &'bytes [u8]), ParseError> {
        let (field_a, bytes) = U32::split_bytes(bytes)?;
        let (field_b, bytes) = <Bar<T>>::split_bytes(bytes)?;
        Ok((Self { a: field_a, b: field_b }, bytes))
    }
}