pub struct Piece(/* private fields */);Expand description
A piece of archival history.
This version is allocated on the heap, for stack-allocated piece see InnerPiece.
Internally piece contains a record and corresponding proof that together with segment root of the segment this piece belongs to can be used to verify that a piece belongs to the actual archival history of the blockchain.
Implementations§
Source§impl Piece
impl Piece
Sourcepub fn from_parts(header: &PieceHeader, record: &Record) -> Self
pub fn from_parts(header: &PieceHeader, record: &Record) -> Self
Create a piece from its header and record.
Contents are written into a new allocation directly, without zeroing it first or going through the stack.
Ensure piece contains cheaply cloneable shared data.
Internally piece uses CoW mechanism and can store either mutable owned data or data that is cheap to clone, calling this method will ensure further clones will not result in additional memory allocations.
Methods from Deref<Target = InnerPiece>§
Sourcepub fn is_valid(
&self,
super_segment_root: &SuperSegmentRoot,
num_segments: u32,
position: PiecePosition,
) -> bool
pub fn is_valid( &self, super_segment_root: &SuperSegmentRoot, num_segments: u32, position: PiecePosition, ) -> bool
Check whether the piece is valid against the matching super segment root
Sourcepub fn record_root(&self) -> RecordRoot
pub fn record_root(&self) -> RecordRoot
Root of the record contained within a piece.
It is re-derived on every call of this function.
Trait Implementations§
Source§impl Decode for Piece
Available on crate feature scale-codec only.
impl Decode for Piece
scale-codec only.Source§fn decode<I>(input: &mut I) -> Result<Self, Error>where
I: Input,
fn decode<I>(input: &mut I) -> Result<Self, Error>where
I: 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,
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Source§impl<'de> Deserialize<'de> for Piece
Available on crate feature serde only.
impl<'de> Deserialize<'de> for Piece
serde only.Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl Encode for Piece
Available on crate feature scale-codec only.
impl Encode for Piece
scale-codec only.Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
Source§fn encode_to<O>(&self, dest: &mut O)where
O: Output + ?Sized,
fn encode_to<O>(&self, dest: &mut O)where
O: Output + ?Sized,
Source§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
impl EncodeLike for Piece
scale-codec only.impl Eq for Piece
Source§impl From<&InnerPiece> for Piece
impl From<&InnerPiece> for Piece
Source§fn from(value: &InnerPiece) -> Self
fn from(value: &InnerPiece) -> Self
impl StructuralPartialEq for Piece
Auto Trait Implementations§
impl !Freeze for Piece
impl Forget for Piece
impl RefUnwindSafe for Piece
impl Send for Piece
impl Sync for Piece
impl Unpin for Piece
impl UnsafeUnpin for Piece
impl UnwindSafe for Piece
Blanket Implementations§
§impl<T, U> AsByteSlice<T> for U
impl<T, U> AsByteSlice<T> for U
fn as_byte_slice(&self) -> &[u8] ⓘ
§impl<T, U> AsMutByteSlice<T> for U
impl<T, U> AsMutByteSlice<T> for U
fn as_mut_byte_slice(&mut self) -> &mut [u8] ⓘ
§impl<U> AsMutSliceOf for U
impl<U> AsMutSliceOf for U
fn as_mut_slice_of<T>(&mut self) -> Result<&mut [T], Error>where
T: FromByteSlice,
§impl<U> AsSliceOf for U
impl<U> AsSliceOf for U
fn as_slice_of<T>(&self) -> Result<&[T], Error>where
T: FromByteSlice,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<S> Codec for Swhere
S: Decode + Encode,
§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>
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> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> EncodeLike<&&T> for Twhere
T: Encode,
impl<T> EncodeLike<&T> for Twhere
T: Encode,
impl<T> EncodeLike<&mut T> for Twhere
T: Encode,
impl<T> EncodeLike<Arc<T>> for Twhere
T: Encode,
impl<T> EncodeLike<Box<T>> for Twhere
T: Encode,
impl<T> EncodeLike<Cow<'_, T>> for Twhere
T: ToOwned + Encode,
impl<T> EncodeLike<Rc<T>> for Twhere
T: Encode,
impl<S> FullCodec for Swhere
S: Decode + FullEncode,
impl<S> FullEncode for Swhere
S: Encode + EncodeLike,
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<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
§fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8> ⓘ
fn to_keyed_vec(&self, prepend_key: &[u8]) -> Vec<u8> ⓘ
Self prepended by given slice.§impl<H> NewMerkleHasherForTreeSize for Hwhere
H: Default,
impl<H> NewMerkleHasherForTreeSize for Hwhere
H: Default,
§fn new_for_tree_size(_num_leaves: u64) -> H
fn new_for_tree_size(_num_leaves: u64) -> H
num_leaves leaves§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> ToHex for T
impl<T> ToHex for T
Source§fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
self into the result. Lower case
letters are used (e.g. f9b4ca)Source§fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
self into the result. Upper case
letters are used (e.g. F9B4CA)