pub struct Segment<T> { /* private fields */ }
Expand description
Segment of a PMMR: unpruned leaves and the necessary data to verify segment membership in the original MMR.
Implementations§
Source§impl<T> Segment<T>
impl<T> Segment<T>
Sourcepub fn segment_pos_range(&self, mmr_size: u64) -> (u64, u64)
pub fn segment_pos_range(&self, mmr_size: u64) -> (u64, u64)
Inclusive range of MMR positions for this segment
Sourcepub fn identifier(&self) -> SegmentIdentifier
pub fn identifier(&self) -> SegmentIdentifier
Get the identifier associated with this segment
Sourcepub fn parts(
self,
) -> (SegmentIdentifier, Vec<u64>, Vec<Hash>, Vec<u64>, Vec<T>, SegmentProof)
pub fn parts( self, ) -> (SegmentIdentifier, Vec<u64>, Vec<Hash>, Vec<u64>, Vec<T>, SegmentProof)
Consume the segment and return its parts
Sourcepub fn from_parts(
identifier: SegmentIdentifier,
hash_pos: Vec<u64>,
hashes: Vec<Hash>,
leaf_pos: Vec<u64>,
leaf_data: Vec<T>,
proof: SegmentProof,
) -> Self
pub fn from_parts( identifier: SegmentIdentifier, hash_pos: Vec<u64>, hashes: Vec<Hash>, leaf_pos: Vec<u64>, leaf_data: Vec<T>, proof: SegmentProof, ) -> Self
Construct a segment from its parts
Sourcepub fn leaf_iter(&self) -> impl Iterator<Item = (u64, &T)> + '_
pub fn leaf_iter(&self) -> impl Iterator<Item = (u64, &T)> + '_
Iterator of all the leaves in the segment
Sourcepub fn hash_iter(&self) -> impl Iterator<Item = (u64, Hash)> + '_
pub fn hash_iter(&self) -> impl Iterator<Item = (u64, Hash)> + '_
Iterator of all the hashes in the segment
Sourcepub fn proof(&self) -> &SegmentProof
pub fn proof(&self) -> &SegmentProof
Segment proof
Sourcepub fn id(&self) -> SegmentIdentifier
pub fn id(&self) -> SegmentIdentifier
Segment identifier
Source§impl<T> Segment<T>
impl<T> Segment<T>
Sourcepub fn from_pmmr<U, B>(
segment_id: SegmentIdentifier,
pmmr: &ReadonlyPMMR<'_, U, B>,
prunable: bool,
) -> Result<Self, SegmentError>
pub fn from_pmmr<U, B>( segment_id: SegmentIdentifier, pmmr: &ReadonlyPMMR<'_, U, B>, prunable: bool, ) -> Result<Self, SegmentError>
Generate a segment from a PMMR
Source§impl<T> Segment<T>where
T: PMMRIndexHashable,
impl<T> Segment<T>where
T: PMMRIndexHashable,
Sourcepub fn root(
&self,
mmr_size: u64,
bitmap: Option<&Bitmap>,
) -> Result<Option<Hash>, SegmentError>
pub fn root( &self, mmr_size: u64, bitmap: Option<&Bitmap>, ) -> Result<Option<Hash>, SegmentError>
Calculate root hash of this segment
Returns None
iff the segment is full and completely pruned
Sourcepub fn first_unpruned_parent(
&self,
mmr_size: u64,
bitmap: Option<&Bitmap>,
) -> Result<(Hash, u64), SegmentError>
pub fn first_unpruned_parent( &self, mmr_size: u64, bitmap: Option<&Bitmap>, ) -> Result<(Hash, u64), SegmentError>
Get the first 1-based (sucks) unpruned parent hash of this segment
Sourcepub fn validate(
&self,
mmr_size: u64,
bitmap: Option<&Bitmap>,
mmr_root: Hash,
) -> Result<(), SegmentError>
pub fn validate( &self, mmr_size: u64, bitmap: Option<&Bitmap>, mmr_root: Hash, ) -> Result<(), SegmentError>
Check validity of the segment by calculating its root and validating the merkle proof
Sourcepub fn validate_with(
&self,
mmr_size: u64,
bitmap: Option<&Bitmap>,
mmr_root: Hash,
hash_last_pos: u64,
other_root: Hash,
other_is_left: bool,
) -> Result<(), SegmentError>
pub fn validate_with( &self, mmr_size: u64, bitmap: Option<&Bitmap>, mmr_root: Hash, hash_last_pos: u64, other_root: Hash, other_is_left: bool, ) -> Result<(), SegmentError>
Check validity of the segment by calculating its root and validating the merkle proof
This function assumes a final hashing step together with other_root
Trait Implementations§
impl<T: Eq> Eq for Segment<T>
impl<T> StructuralPartialEq for Segment<T>
Auto Trait Implementations§
impl<T> Freeze for Segment<T>
impl<T> RefUnwindSafe for Segment<T>where
T: RefUnwindSafe,
impl<T> Send for Segment<T>where
T: Send,
impl<T> Sync for Segment<T>where
T: Sync,
impl<T> Unpin for Segment<T>where
T: Unpin,
impl<T> UnwindSafe for Segment<T>where
T: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.