pub trait Decode<'de, M>: Sized {
// Required method
fn decode<D>(cx: &D::Cx, decoder: D) -> Result<Self, D::Error>
where D: Decoder<'de, Mode = M>;
}
Expand description
Trait governing how types are decoded.
This is typically implemented automatically using the Decode
derive.
§Examples
use musli::Decode;
#[derive(Decode)]
struct MyType {
data: [u8; 128],
}
Implementing manually:
use musli::{Decode, Decoder};
struct MyType {
data: [u8; 128],
}
impl<'de, M> Decode<'de, M> for MyType {
fn decode<D>(cx: &D::Cx, decoder: D) -> Result<Self, D::Error>
where
D: Decoder<'de>,
{
Ok(Self {
data: decoder.decode_array()?,
})
}
}
Required Methods§
Object Safety§
This trait is not object safe.
Implementations on Foreign Types§
source§impl<'de> Decode<'de, Binary> for SocketAddrV4
Available on crate feature std
only.
impl<'de> Decode<'de, Binary> for SocketAddrV4
Available on crate feature
std
only.source§impl<'de> Decode<'de, Binary> for SocketAddrV6
Available on crate feature std
only.
impl<'de> Decode<'de, Binary> for SocketAddrV6
Available on crate feature
std
only.source§impl<'de> Decode<'de, Text> for SocketAddrV4
Available on crate feature std
only.
impl<'de> Decode<'de, Text> for SocketAddrV4
Available on crate feature
std
only.source§impl<'de> Decode<'de, Text> for SocketAddrV6
Available on crate feature std
only.
impl<'de> Decode<'de, Text> for SocketAddrV6
Available on crate feature
std
only.source§impl<'de, K, V, M, S> Decode<'de, M> for HashMap<K, V, S>
Available on crate features alloc
and std
only.
impl<'de, K, V, M, S> Decode<'de, M> for HashMap<K, V, S>
Available on crate features
alloc
and std
only.source§impl<'de, M> Decode<'de, M> for SocketAddr
Available on crate feature std
only.
impl<'de, M> Decode<'de, M> for SocketAddr
Available on crate feature
std
only.source§impl<'de, M> Decode<'de, M> for Box<OsStr>where
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for Box<OsStr>where
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for Box<Path>where
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for Box<Path>where
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for Rc<OsStr>where
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for Rc<OsStr>where
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for Rc<Path>where
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for Rc<Path>where
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for Arc<OsStr>where
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for Arc<OsStr>where
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for Arc<Path>where
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for Arc<Path>where
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for AtomicBool
impl<'de, M> Decode<'de, M> for AtomicBool
source§impl<'de, M> Decode<'de, M> for AtomicIsize
impl<'de, M> Decode<'de, M> for AtomicIsize
source§impl<'de, M> Decode<'de, M> for AtomicUsize
impl<'de, M> Decode<'de, M> for AtomicUsize
source§impl<'de, M> Decode<'de, M> for OsStringwhere
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for OsStringwhere
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for PathBufwhere
PlatformTag: Decode<'de, M>,
Available on crate feature std
and (Unix or Windows) and crate feature alloc
only.
impl<'de, M> Decode<'de, M> for PathBufwhere
PlatformTag: Decode<'de, M>,
Available on crate feature
std
and (Unix or Windows) and crate feature alloc
only.source§impl<'de, M> Decode<'de, M> for NonZeroI16
impl<'de, M> Decode<'de, M> for NonZeroI16
source§impl<'de, M> Decode<'de, M> for NonZeroI32
impl<'de, M> Decode<'de, M> for NonZeroI32
source§impl<'de, M> Decode<'de, M> for NonZeroI64
impl<'de, M> Decode<'de, M> for NonZeroI64
source§impl<'de, M> Decode<'de, M> for NonZeroI128
impl<'de, M> Decode<'de, M> for NonZeroI128
source§impl<'de, M> Decode<'de, M> for NonZeroIsize
impl<'de, M> Decode<'de, M> for NonZeroIsize
source§impl<'de, M> Decode<'de, M> for NonZeroU16
impl<'de, M> Decode<'de, M> for NonZeroU16
source§impl<'de, M> Decode<'de, M> for NonZeroU32
impl<'de, M> Decode<'de, M> for NonZeroU32
source§impl<'de, M> Decode<'de, M> for NonZeroU64
impl<'de, M> Decode<'de, M> for NonZeroU64
source§impl<'de, M> Decode<'de, M> for NonZeroU128
impl<'de, M> Decode<'de, M> for NonZeroU128
source§impl<'de, M> Decode<'de, M> for NonZeroUsize
impl<'de, M> Decode<'de, M> for NonZeroUsize
source§impl<'de, M, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
T0: Decode<'de, M>,
T1: Decode<'de, M>,
T2: Decode<'de, M>,
T3: Decode<'de, M>,
T4: Decode<'de, M>,
T5: Decode<'de, M>,
T6: Decode<'de, M>,
T7: Decode<'de, M>,
T8: Decode<'de, M>,
T9: Decode<'de, M>,
T10: Decode<'de, M>,
T11: Decode<'de, M>,
T12: Decode<'de, M>,
T13: Decode<'de, M>,
T14: Decode<'de, M>,
T15: Decode<'de, M>,
impl<'de, M, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
T0: Decode<'de, M>,
T1: Decode<'de, M>,
T2: Decode<'de, M>,
T3: Decode<'de, M>,
T4: Decode<'de, M>,
T5: Decode<'de, M>,
T6: Decode<'de, M>,
T7: Decode<'de, M>,
T8: Decode<'de, M>,
T9: Decode<'de, M>,
T10: Decode<'de, M>,
T11: Decode<'de, M>,
T12: Decode<'de, M>,
T13: Decode<'de, M>,
T14: Decode<'de, M>,
T15: Decode<'de, M>,
source§impl<'de, M, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
T1: Decode<'de, M>,
T2: Decode<'de, M>,
T3: Decode<'de, M>,
T4: Decode<'de, M>,
T5: Decode<'de, M>,
T6: Decode<'de, M>,
T7: Decode<'de, M>,
T8: Decode<'de, M>,
T9: Decode<'de, M>,
T10: Decode<'de, M>,
T11: Decode<'de, M>,
T12: Decode<'de, M>,
T13: Decode<'de, M>,
T14: Decode<'de, M>,
T15: Decode<'de, M>,
impl<'de, M, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
T1: Decode<'de, M>,
T2: Decode<'de, M>,
T3: Decode<'de, M>,
T4: Decode<'de, M>,
T5: Decode<'de, M>,
T6: Decode<'de, M>,
T7: Decode<'de, M>,
T8: Decode<'de, M>,
T9: Decode<'de, M>,
T10: Decode<'de, M>,
T11: Decode<'de, M>,
T12: Decode<'de, M>,
T13: Decode<'de, M>,
T14: Decode<'de, M>,
T15: Decode<'de, M>,
source§impl<'de, M, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T7, T8, T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T7, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T7, T8, T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T8, T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T8, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T8, T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T9, T10, T11, T12, T13, T14, T15)
impl<'de, M, T9, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T9, T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T10, T11, T12, T13, T14, T15)
impl<'de, M, T10, T11, T12, T13, T14, T15> Decode<'de, M> for (T10, T11, T12, T13, T14, T15)
source§impl<'de, M, T11, T12, T13, T14, T15> Decode<'de, M> for (T11, T12, T13, T14, T15)
impl<'de, M, T11, T12, T13, T14, T15> Decode<'de, M> for (T11, T12, T13, T14, T15)
source§impl<'de, M, T12, T13, T14, T15> Decode<'de, M> for (T12, T13, T14, T15)
impl<'de, M, T12, T13, T14, T15> Decode<'de, M> for (T12, T13, T14, T15)
source§impl<'de, M, T13, T14, T15> Decode<'de, M> for (T13, T14, T15)
impl<'de, M, T13, T14, T15> Decode<'de, M> for (T13, T14, T15)
source§impl<'de, M, T14, T15> Decode<'de, M> for (T14, T15)
impl<'de, M, T14, T15> Decode<'de, M> for (T14, T15)
source§impl<'de, M, T> Decode<'de, M> for Box<[T]>where
T: Decode<'de, M>,
Available on crate feature alloc
only.
impl<'de, M, T> Decode<'de, M> for Box<[T]>where
T: Decode<'de, M>,
Available on crate feature
alloc
only.source§impl<'de, M, T> Decode<'de, M> for Box<T>where
T: Decode<'de, M>,
Available on crate feature alloc
only.
impl<'de, M, T> Decode<'de, M> for Box<T>where
T: Decode<'de, M>,
Available on crate feature
alloc
only.source§impl<'de, M, T> Decode<'de, M> for BinaryHeap<T>
Available on crate feature alloc
only.
impl<'de, M, T> Decode<'de, M> for BinaryHeap<T>
Available on crate feature
alloc
only.source§impl<'de, M, T> Decode<'de, M> for VecDeque<T>where
T: Decode<'de, M>,
Available on crate feature alloc
only.
impl<'de, M, T> Decode<'de, M> for VecDeque<T>where
T: Decode<'de, M>,
Available on crate feature
alloc
only.source§impl<'de, M, T> Decode<'de, M> for Rc<T>where
T: Decode<'de, M>,
Available on crate feature alloc
only.
impl<'de, M, T> Decode<'de, M> for Rc<T>where
T: Decode<'de, M>,
Available on crate feature
alloc
only.source§impl<'de, M, T> Decode<'de, M> for Arc<T>where
T: Decode<'de, M>,
Available on crate feature alloc
only.
impl<'de, M, T> Decode<'de, M> for Arc<T>where
T: Decode<'de, M>,
Available on crate feature
alloc
only.source§impl<'de, M, T> Decode<'de, M> for Vec<T>where
T: Decode<'de, M>,
Available on crate feature alloc
only.
impl<'de, M, T> Decode<'de, M> for Vec<T>where
T: Decode<'de, M>,
Available on crate feature
alloc
only.source§impl<'de, M, T> Decode<'de, M> for PhantomData<T>
impl<'de, M, T> Decode<'de, M> for PhantomData<T>
source§impl<'de, M, T> Decode<'de, M> for RangeInclusive<T>where
T: Decode<'de, M>,
impl<'de, M, T> Decode<'de, M> for RangeInclusive<T>where
T: Decode<'de, M>,
source§impl<'de, M, T> Decode<'de, M> for RangeToInclusive<T>where
T: Decode<'de, M>,
impl<'de, M, T> Decode<'de, M> for RangeToInclusive<T>where
T: Decode<'de, M>,
source§impl<'de, M, T, S> Decode<'de, M> for HashSet<T, S>
Available on crate features alloc
and std
only.
impl<'de, M, T, S> Decode<'de, M> for HashSet<T, S>
Available on crate features
alloc
and std
only.