netherite 0.1.3

A tokio implementation of the Minecraft Protocol with derive macros
Documentation
mod ser {
    use crate::{assert_serialization, encoding::varint::VarInt};

    #[test]
    fn serialize_str() {
        assert_serialization!("ciao" => b"\x04ciao");
    }

    #[test]
    fn serialize_option() {
        assert_serialization!(Option::<()>::None => &[0x00]);
        assert_serialization!(Some(10u32) => &[0x01, 0x00, 0x00, 0x00, 0x0A]);
    }

    #[test]
    fn serialize_varint() {
        assert_serialization!(VarInt(-1) => &[0xff, 0xff, 0xff, 0xff, 0x0f]);
    }
}

mod de {
    use bytes::Bytes;

    use crate::{
        assert_deserialization,
        encoding::{str::Str, varint::VarInt},
    };

    #[test]
    fn deserialize() {
        assert_deserialization!(&[0x00, 0x00, 0x00, 0x01] => 1u32);
    }

    #[test]
    fn deserialize_str() {
        assert_deserialization!(b"\x04ciao_extradata" => "ciao", Str);
    }

    #[test]
    fn deserialize_borrowed_bytes() {
        assert_deserialization!(b"\x04aaaa" => b"aaaa", Bytes);
    }

    #[test]
    fn deserialize_varint() {
        assert_deserialization!(b"\xff\x01" => VarInt(255));
    }

    #[test]
    fn deserialize_option() {
        assert_deserialization!(&[0x01, 0x01] => Some(1u8));
        assert_deserialization!(&[0x00] => Option::<()>::None);
    }
}