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§
source§impl<T: PartialEq> PartialEq for Segment<T>
impl<T: PartialEq> PartialEq for Segment<T>
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<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.