nurtex_protocol/packet.rs
1use std::io::{self, Cursor, Write};
2
3/// Трейт пакета протокола
4pub trait ProtocolPacket
5where
6 Self: Sized,
7{
8 /// Метод получения ID текущего пакета
9 fn id(&self) -> u32;
10
11 /// Метод чтения данных определённого пакета из буффера
12 fn read(id: u32, buffer: &mut Cursor<&[u8]>) -> Option<Self>;
13
14 /// Метод записи данных пакета в буффер
15 fn write(&self, buffer: &mut impl Write) -> io::Result<()>;
16}
17
18/// Трейт для получения образца пакета
19pub trait IntoPacket<T> {
20 fn into_packet(self) -> T;
21}