use crate::error::DecodeError;
use ufotofu::sync::{BulkConsumer, BulkProducer};
pub trait Encodable {
fn encode<Consumer>(&self, consumer: &mut Consumer) -> Result<(), Consumer::Error>
where
Consumer: BulkConsumer<Item = u8>;
}
pub trait Decodable {
fn decode<Producer>(producer: &mut Producer) -> Result<Self, DecodeError<Producer::Error>>
where
Producer: BulkProducer<Item = u8>,
Self: Sized;
}
pub trait RelativeEncodable<R> {
fn relative_encode<Consumer>(
&self,
reference: &R,
consumer: &mut Consumer,
) -> Result<(), Consumer::Error>
where
Consumer: BulkConsumer<Item = u8>;
}
pub trait RelativeDecodable<R> {
fn relative_decode<Producer>(
reference: &R,
producer: &mut Producer,
) -> Result<Self, DecodeError<Producer::Error>>
where
Producer: BulkProducer<Item = u8>,
Self: Sized;
}