92个重大版本
新 0.95.0 | 2024年8月18日 |
---|---|
0.93.0 | 2024年8月18日 |
0.51.0 | 2024年7月30日 |
127 在 #encode-decode
6,666 每月下载
用于 packetize
21KB
473 行
packetize
- 支持网络数据包的快速编码和解码。
- 具有宏的包帧功能。
- 适用于多种包格式(例如,WebSocket、Minecraft、TCP)
use fastbuf::Buffer;
use packetize::ClientBoundPacketStream;
use packetize::{streaming_packets, Decode, Encode, SimplePacketStreamFormat};
#[streaming_packets]
#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord)]
pub enum PacketStreamState {
#[default]
HandShake(#[change_state_to(Login)] HandShakeS2c),
Login(LoginRequestS2c, #[id(1)] LoginSuccessC2s),
//...
}
#[derive(Encode, Decode)]
pub struct HandShakeS2c {
protocol_version: i32,
}
#[derive(Encode, Decode)]
pub struct LoginRequestS2c {}
#[derive(Encode, Decode)]
pub struct LoginSuccessC2s {}
let buf = &mut Buffer::<100>::new();
let mut state = PacketStreamState::HandShake;
state
.encode_client_bound_packet(
&HandShakeS2c {
protocol_version: 123,
}
.into(),
buf,
&mut SimplePacketStreamFormat,
)
.unwrap();
assert_eq!(state, PacketStreamState::Login);
依赖项
~255–700KB
~17K SLoC