pub enum VersionedEitherMessage<L, R> {
    Left(L),
    Right(R),
}Expand description
The main purpose of this data type is to enable a seamless transition between protocol versions at the Network level. It
provides a generic implementation of the Decode and Encode traits (LE byte representation) by prepending byte
representations for provided type parameters with their version (they need to implement the Versioned trait). If one
provides data types that declares equal versions, the first data type parameter will have priority while decoding. Keep in
mind that in such case, decode might fail even if the second data type would be able decode provided byte representation.
Variants§
Trait Implementations§
source§impl<L: Clone, R: Clone> Clone for VersionedEitherMessage<L, R>
 
impl<L: Clone, R: Clone> Clone for VersionedEitherMessage<L, R>
source§fn clone(&self) -> VersionedEitherMessage<L, R>
 
fn clone(&self) -> VersionedEitherMessage<L, R>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from 
source. Read moresource§impl<L: Versioned + Decode, R: Versioned + Decode> Decode for VersionedEitherMessage<L, R>
 
impl<L: Versioned + Decode, R: Versioned + Decode> Decode for VersionedEitherMessage<L, R>
source§fn decode<I: Input>(input: &mut I) -> Result<Self, Error>
 
fn decode<I: Input>(input: &mut I) -> Result<Self, Error>
Attempt to deserialise the value from input.
§fn decode_into<I>(
    input: &mut I,
    dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
    I: Input,
 
fn decode_into<I>(
    input: &mut I,
    dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
    I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
§fn skip<I>(input: &mut I) -> Result<(), Error>where
    I: Input,
 
fn skip<I>(input: &mut I) -> Result<(), Error>where
    I: Input,
Attempt to skip the encoded value from input. Read more
§fn encoded_fixed_size() -> Option<usize>
 
fn encoded_fixed_size() -> Option<usize>
Returns the fixed encoded size of the type. Read more
source§impl<L: Versioned + Encode, R: Versioned + Encode> Encode for VersionedEitherMessage<L, R>
 
impl<L: Versioned + Encode, R: Versioned + Encode> Encode for VersionedEitherMessage<L, R>
source§fn size_hint(&self) -> usize
 
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
source§fn encode_to<T: Output + ?Sized>(&self, dest: &mut T)
 
fn encode_to<T: Output + ?Sized>(&self, dest: &mut T)
Convert self to a slice and append it to the destination.
§fn using_encoded<R, F>(&self, f: F) -> R
 
fn using_encoded<R, F>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
§fn encoded_size(&self) -> usize
 
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
source§impl From<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>> for VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>>
 
impl From<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>> for VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>>
source§fn from(
    data: Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>
) -> Self
 
fn from( data: Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>> ) -> Self
Converts to this type from the input type.
source§impl From<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>> for VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>>
 
impl From<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>> for VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>>
source§fn from(
    data: Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>
) -> Self
 
fn from( data: Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>> ) -> Self
Converts to this type from the input type.
source§impl TryFrom<VersionedEitherMessage<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>, Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>>> for Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>
 
impl TryFrom<VersionedEitherMessage<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>, Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>>> for Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>
§type Error = VersionedTryFromError
 
type Error = VersionedTryFromError
The type returned in the event of a conversion error.
source§fn try_from(
    value: VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>>
) -> Result<Self, Self::Error>
 
fn try_from( value: VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>> ) -> Result<Self, Self::Error>
Performs the conversion.
source§impl TryFrom<VersionedEitherMessage<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>, Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>>> for Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>
 
impl TryFrom<VersionedEitherMessage<Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>, Split<NetworkData<Wrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, Message<SignableHash<<Header<u32, BlakeTwo256> as Header>::Hash>, Signature, SignatureSet<Signature>>>>> for Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>
§type Error = VersionedTryFromError
 
type Error = VersionedTryFromError
The type returned in the event of a conversion error.
source§fn try_from(
    value: VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>>
) -> Result<Self, Self::Error>
 
fn try_from( value: VersionedEitherMessage<Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>, Split<NetworkData<HashWrapper<BlakeTwo256>, PhronData, Signature, SignatureSet<Signature>>, RmcNetworkData<BlockHash, Signature, SignatureSet<Signature>>>> ) -> Result<Self, Self::Error>
Performs the conversion.
Auto Trait Implementations§
impl<L, R> RefUnwindSafe for VersionedEitherMessage<L, R>where
    L: RefUnwindSafe,
    R: RefUnwindSafe,
impl<L, R> Send for VersionedEitherMessage<L, R>
impl<L, R> Sync for VersionedEitherMessage<L, R>
impl<L, R> Unpin for VersionedEitherMessage<L, R>
impl<L, R> UnwindSafe for VersionedEitherMessage<L, R>where
    L: UnwindSafe,
    R: UnwindSafe,
Blanket Implementations§
§impl<T> AnySync for T
 
impl<T> AnySync for T
source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CheckedConversion for T
 
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
    Self: TryFrom<T>,
 
fn checked_from<T>(t: T) -> Option<Self>where
    Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
    Self: TryInto<T>,
 
fn checked_into<T>(self) -> Option<T>where
    Self: TryInto<T>,
§impl<T> DecodeAll for Twhere
    T: Decode,
 
impl<T> DecodeAll for Twhere
    T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
 
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Decode 
Self and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
    T: Decode,
 
impl<T> DecodeLimit for Twhere
    T: Decode,
§impl<T> Hashable for Twhere
    T: Codec,
 
impl<T> Hashable for Twhere
    T: Codec,
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
 
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
 
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IsType<T> for T
 
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
 
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> KeyedVec for Twhere
    T: Codec,
 
impl<T> KeyedVec for Twhere
    T: Codec,
§impl<T> Pointable for T
 
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
 
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
 
fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
 
fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of 
T. Read more§impl<S, T> UncheckedInto<T> for Swhere
    T: UncheckedFrom<S>,
 
impl<S, T> UncheckedInto<T> for Swhere
    T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
 
fn unchecked_into(self) -> T
The counterpart to 
unchecked_from.§impl<T, S> UniqueSaturatedInto<T> for S
 
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
 
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of 
T.