Trait Decoder

Source
pub trait Decoder<'de>: Sized {
    // Required method
    fn decoder(_: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>;

    // Provided method
    fn decode(data: &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>> { ... }
}
Expand description

This trait used to deserialize the data structure from binary format.

Required Methods§

Source

fn decoder(_: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Deserialize the data from binary format.

Provided Methods§

Source

fn decode(data: &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

§Example
use bin_layout::Decoder;

#[derive(Decoder, PartialEq, Debug)]
struct FooBar {
    foo: u8,
    bar: [u8; 2],
}

let foobar = FooBar::decode(&[1, 2, 3]).unwrap();
assert_eq!(foobar, FooBar { foo: 1, bar: [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 Decoder<'_> for bool

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for char

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for f32

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for f64

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for i8

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for i16

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for i32

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for i64

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for i128

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for isize

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for u8

Source§

fn decoder(reader: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for u16

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for u32

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for u64

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for u128

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl Decoder<'_> for usize

Source§

fn decoder(c: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de> Decoder<'de> for ()

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de> Decoder<'de> for Box<str>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de> Decoder<'de> for Rc<str>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de> Decoder<'de> for String

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de> Decoder<'de> for Arc<str>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, 'a, T> Decoder<'de> for Cow<'a, T>
where T: ToOwned + ?Sized, T::Owned: Decoder<'de>,

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, K: Decoder<'de> + Eq + Hash, V: Decoder<'de>, S: BuildHasher + Default> Decoder<'de> for HashMap<K, V, S>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, K: Decoder<'de> + Ord, V: Decoder<'de>> Decoder<'de> for BTreeMap<K, V>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T> Decoder<'de> for (T,)
where T: Decoder<'de>,

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T, T1> Decoder<'de> for (T, T1)
where T: Decoder<'de>, T1: Decoder<'de>,

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T, T1, T2> Decoder<'de> for (T, T1, T2)
where T: Decoder<'de>, T1: Decoder<'de>, T2: Decoder<'de>,

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T, T1, T2, T3> Decoder<'de> for (T, T1, T2, T3)
where T: Decoder<'de>, T1: Decoder<'de>, T2: Decoder<'de>, T3: Decoder<'de>,

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T, T1, T2, T3, T4> Decoder<'de> for (T, T1, T2, T3, T4)
where T: Decoder<'de>, T1: Decoder<'de>, T2: Decoder<'de>, T3: Decoder<'de>, T4: Decoder<'de>,

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T, T1, T2, T3, T4, T5> Decoder<'de> for (T, T1, T2, T3, T4, T5)
where T: Decoder<'de>, T1: Decoder<'de>, T2: Decoder<'de>, T3: Decoder<'de>, T4: Decoder<'de>, T5: Decoder<'de>,

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

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

Source§

fn decoder(_c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de> + Eq + Hash, S: BuildHasher + Default> Decoder<'de> for HashSet<T, S>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de> + Ord> Decoder<'de> for BinaryHeap<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de> + Ord> Decoder<'de> for BTreeSet<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Option<T>

Source§

fn decoder(r: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Box<[T]>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Box<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for LinkedList<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for VecDeque<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Rc<[T]>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Rc<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Arc<[T]>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Arc<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Vec<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Cell<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for RefCell<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for Range<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>> Decoder<'de> for RangeInclusive<T>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>, E: Decoder<'de>> Decoder<'de> for Result<T, E>

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de, T: Decoder<'de>, const N: usize> Decoder<'de> for [T; N]

Source§

fn decoder(cursor: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de: 'a, 'a> Decoder<'de> for &'a str

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de: 'a, 'a> Decoder<'de> for &'a [u8]

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<'de: 'a, 'a, const N: usize> Decoder<'de> for &'a [u8; N]

Source§

fn decoder(c: &mut &'de [u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Source§

impl<T> Decoder<'_> for PhantomData<T>

Source§

fn decoder(_: &mut &[u8]) -> Result<Self, Box<dyn Error + Send + Sync>>

Implementors§

Source§

impl Decoder<'_> for L2

Source§

impl Decoder<'_> for L3

Source§

impl<'de, Len: LenType> Decoder<'de> for Record<Len, String>

Source§

impl<'de, Len: LenType, K: Decoder<'de> + Eq + Hash, V: Decoder<'de>, S: BuildHasher + Default> Decoder<'de> for Record<Len, HashMap<K, V, S>>

Source§

impl<'de, Len: LenType, K: Decoder<'de> + Ord, V: Decoder<'de>> Decoder<'de> for Record<Len, BTreeMap<K, V>>

Source§

impl<'de, Len: LenType, T: Decoder<'de> + Eq + Hash, S: BuildHasher + Default> Decoder<'de> for Record<Len, HashSet<T, S>>

Source§

impl<'de, Len: LenType, T: Decoder<'de> + Ord> Decoder<'de> for Record<Len, BinaryHeap<T>>

Source§

impl<'de, Len: LenType, T: Decoder<'de> + Ord> Decoder<'de> for Record<Len, BTreeSet<T>>

Source§

impl<'de, Len: LenType, T: Decoder<'de>> Decoder<'de> for Record<Len, LinkedList<T>>

Source§

impl<'de, Len: LenType, T: Decoder<'de>> Decoder<'de> for Record<Len, VecDeque<T>>

Source§

impl<'de, Len: LenType, T: Decoder<'de>> Decoder<'de> for Record<Len, Vec<T>>

Source§

impl<'de: 'a, 'a, Len: LenType> Decoder<'de> for Record<Len, &'a str>

Source§

impl<'de: 'a, 'a, Len: LenType> Decoder<'de> for Record<Len, &'a [u8]>