Derive Macro durian::BinPacket

#[derive(BinPacket)]
Expand description

derive macro to automatically implement Packet and PacketBuilder for a struct.

For example:

#[derive(BinPacket)]
struct Position {
    x: i32,
    y: i32
}

Generates this code:

impl durian::Packet for Position {
    fn as_bytes(&self) -> durian::bytes::Bytes {
        durian::bytes::Bytes::from(durian::bincode::serialize(self).unwrap())
    }
}

#[derive(Copy, Clone)]
pub struct PositionPacketBuilder;
impl durian::PacketBuilder<Position> for PositionPacketBuilder {

    fn read(&self, bytes: durian::bytes::Bytes) -> Result<Position, Box<dyn std::error::Error>> {
        Ok(durian::bincode::deserialize(bytes.as_ref()).unwrap())
    }
}