Trait Encoder

Source
pub trait Encoder {
    // Required method
    fn encoder(&self, _: &mut impl Write) -> Result<()>;

    // Provided method
    fn encode(&self) -> Vec<u8>  { ... }
}
Expand description

This trait used to serialize the data structure into binary format.

Required Methods§

Source

fn encoder(&self, _: &mut impl Write) -> Result<()>

Serialize the data into binary format.

Provided Methods§

Source

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

§Example
use bin_layout::Encoder;

#[derive(Encoder)]
struct FooBar {
    foo: u8,
    bar: [u8; 2],
}
let bytes = FooBar { foo: 1, bar: [2, 3] }.encode();
assert_eq!(bytes, vec![1, 2, 3]);

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 Encoder for bool

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for char

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl Encoder for f32

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for f64

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for i8

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for i16

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for i32

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for i64

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for i128

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for isize

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for str

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl Encoder for u8

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for u16

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for u32

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for u64

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for u128

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for ()

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl Encoder for usize

Source§

fn encoder(&self, writer: &mut impl Write) -> Result<()>

Source§

impl Encoder for String

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<'a, T> Encoder for Cow<'a, T>
where T: ?Sized + Encoder + ToOwned,

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<K: Encoder, V: Encoder> Encoder for BTreeMap<K, V>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<K: Encoder, V: Encoder, S> Encoder for HashMap<K, V, S>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T> Encoder for (T,)
where T: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T> Encoder for PhantomData<T>

Source§

fn encoder(&self, _: &mut impl Write) -> Result<()>

Source§

impl<T, T1> Encoder for (T, T1)
where T: Encoder, T1: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2> Encoder for (T, T1, T2)
where T: Encoder, T1: Encoder, T2: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3> Encoder for (T, T1, T2, T3)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4> Encoder for (T, T1, T2, T3, T4)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5> Encoder for (T, T1, T2, T3, T4, T5)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6> Encoder for (T, T1, T2, T3, T4, T5, T6)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7> Encoder for (T, T1, T2, T3, T4, T5, T6, T7)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder, T9: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder, T9: Encoder, T10: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder, T9: Encoder, T10: Encoder, T11: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder, T9: Encoder, T10: Encoder, T11: Encoder, T12: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder, T9: Encoder, T10: Encoder, T11: Encoder, T12: Encoder, T13: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder, T9: Encoder, T10: Encoder, T11: Encoder, T12: Encoder, T13: Encoder, T14: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Encoder for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
where T: Encoder, T1: Encoder, T2: Encoder, T3: Encoder, T4: Encoder, T5: Encoder, T6: Encoder, T7: Encoder, T8: Encoder, T9: Encoder, T10: Encoder, T11: Encoder, T12: Encoder, T13: Encoder, T14: Encoder, T15: Encoder,

Source§

fn encoder(&self, _c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder + Copy> Encoder for Cell<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder + ?Sized> Encoder for &T

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder + ?Sized> Encoder for &mut T

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder + ?Sized> Encoder for Box<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder + ?Sized> Encoder for Rc<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder + ?Sized> Encoder for Arc<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for Option<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for [T]

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for BinaryHeap<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for BTreeSet<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for LinkedList<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for VecDeque<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for Vec<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for RefCell<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for Range<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder> Encoder for RangeInclusive<T>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder, E: Encoder> Encoder for Result<T, E>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder, S> Encoder for HashSet<T, S>

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Source§

impl<T: Encoder, const N: usize> Encoder for [T; N]

Source§

fn encoder(&self, c: &mut impl Write) -> Result<()>

Implementors§

Source§

impl Encoder for L2

Source§

impl Encoder for L3

Source§

impl<Len: LenType> Encoder for Record<Len, &str>

Source§

impl<Len: LenType> Encoder for Record<Len, String>

Source§

impl<Len: LenType, K: Encoder, V: Encoder> Encoder for Record<Len, BTreeMap<K, V>>

Source§

impl<Len: LenType, K: Encoder, V: Encoder, S> Encoder for Record<Len, HashMap<K, V, S>>

Source§

impl<Len: LenType, T: Encoder> Encoder for Record<Len, &[T]>

Source§

impl<Len: LenType, T: Encoder> Encoder for Record<Len, BinaryHeap<T>>

Source§

impl<Len: LenType, T: Encoder> Encoder for Record<Len, BTreeSet<T>>

Source§

impl<Len: LenType, T: Encoder> Encoder for Record<Len, LinkedList<T>>

Source§

impl<Len: LenType, T: Encoder> Encoder for Record<Len, VecDeque<T>>

Source§

impl<Len: LenType, T: Encoder> Encoder for Record<Len, Vec<T>>

Source§

impl<Len: LenType, T: Encoder, S> Encoder for Record<Len, HashSet<T, S>>