1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use crate::ross_event::ross_event_packet::RossEventPacketError;
use crate::ross_packet::RossPacket;

#[derive(Debug, PartialEq)]
pub enum RossConvertPacketError {
    /// Provided packet was not appropriately sized
    WrongSize,
    /// The provided packet was of a wrong type
    WrongType,
    /// Event packet specific error
    EventPacket(RossEventPacketError),
}

pub trait RossConvertPacket<T> {
    fn try_from_packet(packet: RossPacket) -> Result<T, RossConvertPacketError>;
    fn to_packet(&self) -> RossPacket;
}