#[derive(Copy, Clone, Debug)]
pub enum WriteError {
SpaceExhausted,
InvalidArrayLength,
}
impl core::fmt::Display for WriteError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
WriteError::SpaceExhausted => write!(f, "space exhausted"),
WriteError::InvalidArrayLength => write!(f, "invalid array length (too large)"),
}
}
}
impl core::error::Error for WriteError {}
pub type WriteResult<T = ()> = core::result::Result<T, WriteError>;
pub trait Writer<F> {
#[doc(hidden)]
fn write_opaque_fixed(&mut self, bytes: &[u8]) -> WriteResult<()>;
#[doc(hidden)]
fn write_opaque_unpadded(&mut self, bytes: &[u8]) -> WriteResult<()>;
#[doc(hidden)]
fn write_opaque_padding(&mut self, len: usize) -> WriteResult<()>;
fn write_opaque_variable(&mut self, bytes: &[u8]) -> WriteResult<()>;
fn write_i64(&mut self, n: i64) -> WriteResult<()>;
fn write_i32(&mut self, n: i32) -> WriteResult<()>;
fn write_i16(&mut self, n: i16) -> WriteResult<()>;
fn write_u64(&mut self, n: u64) -> WriteResult<()>;
fn write_u32(&mut self, n: u32) -> WriteResult<()>;
fn write_u16(&mut self, n: u16) -> WriteResult<()>;
fn write_bool(&mut self, b: bool) -> WriteResult<()>;
fn write_f32(&mut self, n: f32) -> WriteResult<()>;
fn write_f64(&mut self, n: f64) -> WriteResult<()>;
}