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
.