infrarust 1.0.1

A Rust adaptation of the Infrared Minecraft proxy
Documentation
mod reader;
mod utils;
mod writer;

pub use reader::PacketReader;
pub use writer::PacketWriter;

use super::base::Packet;
use super::error::PacketResult;
use async_trait::async_trait;
use bytes::BytesMut;

#[derive(Debug)]
pub enum PacketOrBytes {
    Packet(Packet),
    Raw(BytesMut),
}

#[async_trait]
pub trait PacketReadWrite: Send {
    async fn read_packet(&mut self) -> PacketResult<Packet>;
    async fn write_packet(&mut self, packet: &Packet) -> PacketResult<()>;
}

#[async_trait]
pub trait RawPacketIO: Send {
    async fn read_raw(&mut self) -> PacketResult<Option<BytesMut>>;
    async fn write_raw(&mut self, data: &[u8]) -> PacketResult<()>;
}

pub trait RawPacketReadWrite: RawPacketIO + PacketReadWrite {}
impl<T> RawPacketReadWrite for T where T: RawPacketIO + PacketReadWrite {}