Struct OpaqueLeaf
pub struct OpaqueLeaf(pub Vec<u8>);
Expand description
A helper type to allow using arbitrary SCALE-encoded leaf data in the RuntimeApi.
The point is to be able to verify MMR proofs from external MMRs, where we don’t know the exact leaf type, but it’s enough for us to have it SCALE-encoded.
Note the leaf type should be encoded in its compact form when passed through this type. See FullLeaf documentation for details.
This type does not implement SCALE encoding/decoding on purpose to avoid confusion, it would have to be SCALE-compatible with the concrete leaf type, but due to SCALE limitations it’s not possible to know how many bytes the encoding of concrete leaf type uses.
Tuple Fields§
§0: Vec<u8>
Raw bytes of the leaf type encoded in its compact form.
NOTE it DOES NOT include length prefix (like Vec<u8>
encoding would).
Implementations§
§impl OpaqueLeaf
impl OpaqueLeaf
pub fn from_leaf<T>(leaf: &T) -> OpaqueLeafwhere
T: FullLeaf,
pub fn from_leaf<T>(leaf: &T) -> OpaqueLeafwhere
T: FullLeaf,
Convert a concrete MMR leaf into an opaque type.
pub fn from_encoded_leaf(encoded_leaf: Vec<u8>) -> OpaqueLeaf
pub fn from_encoded_leaf(encoded_leaf: Vec<u8>) -> OpaqueLeaf
Create a OpaqueLeaf
given raw bytes of compact-encoded leaf.
pub fn try_decode<T>(&self) -> Option<T>where
T: Decode,
pub fn try_decode<T>(&self) -> Option<T>where
T: Decode,
Attempt to decode the leaf into expected concrete type.
Trait Implementations§
§impl Clone for OpaqueLeaf
impl Clone for OpaqueLeaf
§fn clone(&self) -> OpaqueLeaf
fn clone(&self) -> OpaqueLeaf
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for OpaqueLeaf
impl Debug for OpaqueLeaf
§impl<'de> Deserialize<'de> for OpaqueLeaf
impl<'de> Deserialize<'de> for OpaqueLeaf
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<OpaqueLeaf, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<OpaqueLeaf, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl FullLeaf for OpaqueLeaf
impl FullLeaf for OpaqueLeaf
§impl PartialEq for OpaqueLeaf
impl PartialEq for OpaqueLeaf
§impl Serialize for OpaqueLeaf
impl Serialize for OpaqueLeaf
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for OpaqueLeaf
Auto Trait Implementations§
impl Freeze for OpaqueLeaf
impl RefUnwindSafe for OpaqueLeaf
impl Send for OpaqueLeaf
impl Sync for OpaqueLeaf
impl Unpin for OpaqueLeaf
impl UnwindSafe for OpaqueLeaf
Blanket Implementations§
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
§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>,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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> 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>
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>
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<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
§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> 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>,
T
. Read more§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
§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
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
T
.