Skip to main content

Decoder

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".

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]>