Skip to main content

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}