eolib 3.0.0

A core rust library for writing applications related to Endless Online
Documentation
use super::{EoReader, EoWriter, eo_reader::EoReaderError, eo_writer::EoWriterError};
use thiserror::Error;

#[derive(Error, Debug, PartialEq, Eq)]
pub enum EoSerializeError {
    #[error("Field can not be null: {0}")]
    Null(String),
    #[error("{0}")]
    WriteError(EoWriterError),
}

impl From<EoWriterError> for EoSerializeError {
    fn from(e: EoWriterError) -> Self {
        Self::WriteError(e)
    }
}

pub trait EoSerialize: Sized {
    fn deserialize(reader: &EoReader) -> Result<Self, EoReaderError>;
    fn serialize(&self, writer: &mut EoWriter) -> Result<(), EoSerializeError>;
}