use crate::{common::traits::private::Sealed, v0::config::Config};
pub trait ReadFrom<T>: Sealed + Sized
where
T: std::io::Read + ?Sized,
{
type ReadError: std::error::Error;
fn read_from<C: ?Sized + Config>(
reader: &mut T,
configuration: &C,
) -> Result<Self, Self::ReadError>;
}
pub trait ReadFromWithLength<T>: Sealed + Sized
where
T: std::io::Read + ?Sized,
{
type ReadError: std::error::Error;
fn read_from<C: ?Sized + Config>(
reader: &mut T,
configuration: &C,
byte_length: usize,
) -> Result<Self, Self::ReadError>;
}
pub trait WriteTo<W>: Sealed
where
W: std::io::Write + ?Sized,
{
type WriteError: std::error::Error;
fn write_to<C: ?Sized + Config>(
&self,
writer: &mut W,
configuration: &C,
) -> Result<(), Self::WriteError>;
}