Trait Codec

Source
pub trait Codec: Sized {
    // Required methods
    fn write(&self, writer: &mut impl Writer);
    fn read(reader: &mut impl Reader) -> Result<Self, Error>;
    fn len_encoded(&self) -> usize;

    // Provided methods
    fn encode(&self) -> Vec<u8>  { ... }
    fn decode(bytes: impl Into<Bytes>) -> Result<Self, Error> { ... }
}
Expand description

Trait for types that can be encoded to and decoded from bytes

Required Methods§

Source

fn write(&self, writer: &mut impl Writer)

Encodes this value to a writer.

Source

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Decodes a value from a reader.

Source

fn len_encoded(&self) -> usize

Returns the encoded length of this value.

Provided Methods§

Source

fn encode(&self) -> Vec<u8>

Encodes a value to bytes.

Source

fn decode(bytes: impl Into<Bytes>) -> Result<Self, Error>

Decodes a value from bytes. Returns an error if there is extra data after decoding the value.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Codec for bool

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for f32

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for f64

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for i8

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for i16

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for i32

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for i64

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for i128

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for u8

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for u16

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for u32

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for u64

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for u128

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl Codec for Bytes

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec> Codec for (T0,)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec> Codec for (T0, T1)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec> Codec for (T0, T1, T2)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec> Codec for (T0, T1, T2, T3)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec> Codec for (T0, T1, T2, T3, T4)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec, T5: Codec> Codec for (T0, T1, T2, T3, T4, T5)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec, T5: Codec, T6: Codec> Codec for (T0, T1, T2, T3, T4, T5, T6)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec, T5: Codec, T6: Codec, T7: Codec> Codec for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec, T5: Codec, T6: Codec, T7: Codec, T8: Codec> Codec for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec, T5: Codec, T6: Codec, T7: Codec, T8: Codec, T9: Codec> Codec for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec, T5: Codec, T6: Codec, T7: Codec, T8: Codec, T9: Codec, T10: Codec> Codec for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T0: Codec, T1: Codec, T2: Codec, T3: Codec, T4: Codec, T5: Codec, T6: Codec, T7: Codec, T8: Codec, T9: Codec, T10: Codec, T11: Codec> Codec for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T: Codec> Codec for Option<T>

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<T: Codec> Codec for Vec<T>

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Source§

impl<const N: usize> Codec for [u8; N]

Source§

fn write(&self, writer: &mut impl Writer)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(reader: &mut impl Reader) -> Result<Self, Error>

Implementors§