Trait Codec

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

    // Provided methods
    fn encode(&self) -> BytesMut { ... }
    fn decode<B: Buf>(buf: B) -> Result<Self, Error> { ... }
}
Expand description

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

Required Methods§

Source

fn write(&self, buf: &mut impl BufMut)

Encodes this value to a writer.

Source

fn len_encoded(&self) -> usize

Returns the encoded length of this value.

Source

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Reads a value from a buffer, returning an error if there is an error while reading.

Provided Methods§

Source

fn encode(&self) -> BytesMut

Encodes a value to bytes.

Source

fn decode<B: Buf>(buf: B) -> Result<Self, Error>

Decodes a value from a buffer.

Returns an error if there is an error while decoding or if there is extra data remaining after decoding the value from the buffer.

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 SocketAddr

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for bool

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for f32

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for f64

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for i8

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for i16

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for i32

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for i64

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for i128

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for u8

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for u16

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for u32

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for u64

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for u128

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for Ipv4Addr

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for Ipv6Addr

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for SocketAddrV4

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for SocketAddrV6

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

impl Codec for Bytes

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

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

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

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

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

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

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

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

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> 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, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

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

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

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

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Source§

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

Source§

fn write(&self, buf: &mut impl BufMut)

Source§

fn len_encoded(&self) -> usize

Source§

fn read(buf: &mut impl Buf) -> Result<Self, Error>

Implementors§