Derive Macro durian_macros::BinPacket
source · #[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())
}
}