PlatformVersionedDecode

Trait PlatformVersionedDecode 

Source
pub trait PlatformVersionedDecode: Sized {
    // Required method
    fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>(
        decoder: &mut D,
        platform_version: &PlatformVersion,
    ) -> Result<Self, DecodeError>;
}
Expand description

Trait that makes a type able to be decoded, akin to serde’s DeserializeOwned trait.

This trait should be implemented for types which do not have references to data in the reader. For types that contain e.g. &str and &[u8], implement BorrowDecode instead.

Whenever you implement Decode for your type, the base trait BorrowDecode is automatically implemented.

This trait will be automatically implemented if you enable the derive feature and add #[derive(bincode::Decode)] to your type. Note that if the type contains any lifetimes, BorrowDecode will be implemented instead.

§Implementing this trait manually

If you want to implement this trait for your type, the easiest way is to add a #[derive(bincode::Decode)], build and check your target/generated/bincode/ folder. This should generate a <Struct name>_Decode.rs file.

For this struct:

struct Entity {
    pub x: f32,
    pub y: f32,
}

It will look something like:

impl<Context> bincode::Decode<Context> for Entity {
    fn decode<D: bincode::de::Decoder<Context = Context>>(
        decoder: &mut D,
    ) -> core::result::Result<Self, bincode::error::DecodeError> {
        Ok(Self {
            x: bincode::Decode::decode(decoder)?,
            y: bincode::Decode::decode(decoder)?,
        })
    }
}
impl<'de, Context> bincode::BorrowDecode<'de, Context> for Entity {
    fn borrow_decode<D: bincode::de::BorrowDecoder<'de, Context = Context>>(
        decoder: &mut D,
    ) -> core::result::Result<Self, bincode::error::DecodeError> {
        Ok(Self {
            x: bincode::BorrowDecode::borrow_decode(decoder)?,
            y: bincode::BorrowDecode::borrow_decode(decoder)?,
        })
    }
}

From here you can add/remove fields, or add custom logic.

To get specific integer types, you can use:

let x: u8 = bincode::Decode::decode(decoder)?;
let x = <u8 as bincode::Decode<Context>>::decode(decoder)?;

Required Methods§

Source

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Attempt to decode this type with the given Decode.

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 PlatformVersionedDecode for IpAddr

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for SocketAddr

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for bool

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for char

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for f32

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for f64

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for i8

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for i16

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for i32

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for i64

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for i128

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for isize

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for u8

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for u16

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for u32

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for u64

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for u128

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for ()

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( _: &mut D, _platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for usize

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for Box<str>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for CString

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for String

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for Arc<str>

Available on target_has_atomic=ptr only.
Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for Ipv4Addr

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for Ipv6Addr

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for SocketAddrV4

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for SocketAddrV6

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for Duration

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for PathBuf

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for SystemTime

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroI8

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroI16

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroI32

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroI64

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroI128

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroIsize

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroU8

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroU16

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroU32

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroU64

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroU128

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl PlatformVersionedDecode for NonZeroUsize

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, _: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A> PlatformVersionedDecode for (A,)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B> PlatformVersionedDecode for (A, B)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C> PlatformVersionedDecode for (A, B, C)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D> PlatformVersionedDecode for (A, B, C, D)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E> PlatformVersionedDecode for (A, B, C, D, E)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F> PlatformVersionedDecode for (A, B, C, D, E, F)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G> PlatformVersionedDecode for (A, B, C, D, E, F, G)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H> PlatformVersionedDecode for (A, B, C, D, E, F, G, H)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I, J> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I, J)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I, J, K> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I, J, K)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I, J, K, L, M)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> PlatformVersionedDecode for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)

Source§

fn platform_versioned_decode<DE: Decoder<Context = BincodeContext>>( decoder: &mut DE, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<K, V> PlatformVersionedDecode for BTreeMap<K, V>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<K, V, S> PlatformVersionedDecode for HashMap<K, V, S>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Cow<'_, T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Bound<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Option<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Box<[T]>
where T: PlatformVersionedDecode + 'static,

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Box<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for BinaryHeap<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for BTreeSet<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for VecDeque<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Rc<[T]>
where T: PlatformVersionedDecode + 'static,

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Rc<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Arc<[T]>
where T: PlatformVersionedDecode + 'static,

Available on target_has_atomic=ptr only.
Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Arc<T>

Available on target_has_atomic=ptr only.
Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Vec<T>
where T: PlatformVersionedDecode + 'static,

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Cell<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for RefCell<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for PhantomData<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( _: &mut D, _platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Range<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for RangeInclusive<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for Mutex<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T> PlatformVersionedDecode for RwLock<T>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T, S> PlatformVersionedDecode for HashSet<T, S>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T, U> PlatformVersionedDecode for Result<T, U>

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Source§

impl<T, const N: usize> PlatformVersionedDecode for [T; N]
where T: PlatformVersionedDecode + Sized + 'static,

Source§

fn platform_versioned_decode<D: Decoder<Context = BincodeContext>>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result<Self, DecodeError>

Implementors§