3 个不稳定版本
0.2.1 | 2023 年 7 月 30 日 |
---|---|
0.2.0 | 2023 年 7 月 30 日 |
0.1.0 | 2023 年 2 月 19 日 |
#19 在 #netcode
在 3 个包中使用 (通过 durian_macros)
15KB
158 行
durian_proc_macros
为 durian 包提供过程宏
这些宏不应单独使用!这些宏依赖于在 durian
中定义的 Traits 和 paths
包含几个宏,可以帮助自动生成 Packet
和 PacketBuilder
的 Impl 块。唯一的要求是该结构必须是可反序列化的,这意味着嵌套字段也必须是可反序列化的。
#[bincode_packet]
将使用 bincode
反/序列化你的 Packet,并自动应用必要的 derive 宏。
use durian::bincode_packet;
// Automatically implements Packet, and generates a PositionPacketBuilder that implements
// PacketBuilder. You can also add other macros such as derive macros so long s they don't
// conflict with what #[bincode_packet] adds (See bincode_packet documentation).
#[bincode_packet]
#[derive(Debug)]
struct Position {
x: i32,
y: i32
}
// Works for Unit (empty) structs as well
#[bincode_packet]
struct Ack;
你也可以手动使用 derive 宏 (BinPacket
和 UnitPacket
)
use durian::serde::{Deserialize, Serialize};
use durian::{BinPacket, UnitPacket};
#[derive(Serialize, Deserialize, BinPacket)]
#[serde(crate = "durian::serde")]
struct Position { x: i32, y: i32 }
#[derive(UnitPacket)]
struct Ack;
依赖项
~0.6–1.2MB
~29K SLoC