pub struct IndexedMerkleTreeCopy<'a, H, I, const HEIGHT: usize>(pub IndexedMerkleTree<'a, H, I, HEIGHT>)
where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Pod,
usize: From<I>;Tuple Fields§
§0: IndexedMerkleTree<'a, H, I, HEIGHT>Implementations§
source§impl<'a, H, I, const HEIGHT: usize> IndexedMerkleTreeCopy<'a, H, I, HEIGHT>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Pod,
usize: From<I>,
impl<'a, H, I, const HEIGHT: usize> IndexedMerkleTreeCopy<'a, H, I, HEIGHT>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Pod,
usize: From<I>,
sourcepub unsafe fn copy_from_bytes(
bytes_struct: &[u8],
bytes_filled_subtrees: &[u8],
bytes_changelog: &[u8],
bytes_roots: &[u8],
bytes_canopy: &[u8],
bytes_indexed_changelog: &'a [u8]
) -> Result<Self, IndexedMerkleTreeError>
pub unsafe fn copy_from_bytes( bytes_struct: &[u8], bytes_filled_subtrees: &[u8], bytes_changelog: &[u8], bytes_roots: &[u8], bytes_canopy: &[u8], bytes_indexed_changelog: &'a [u8] ) -> Result<Self, IndexedMerkleTreeError>
Casts a byte slice into wrapped IndexedMerkleTree structure reference,
including dynamic fields.
§Purpose
This method is meant to be used mostly in Solana programs, where memory constraints are tight and we want to make sure no data is copied.
§Safety
This is highly unsafe. Ensuring the alignment and that the slice provides actual data of the hash set is the caller’s responsibility.
Calling it in async context (or anyhwere where the underlying data can be moved in the memory) is certainly going to cause undefined behavior.
Trait Implementations§
source§impl<'a, H, I, const HEIGHT: usize> Debug for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>where
H: Hasher + Debug,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Pod + Debug,
usize: From<I>,
impl<'a, H, I, const HEIGHT: usize> Debug for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>where
H: Hasher + Debug,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Pod + Debug,
usize: From<I>,
Auto Trait Implementations§
impl<'a, H, I, const HEIGHT: usize> Freeze for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>
impl<'a, H, I, const HEIGHT: usize> RefUnwindSafe for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>
impl<'a, H, I, const HEIGHT: usize> Send for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>
impl<'a, H, I, const HEIGHT: usize> Sync for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>
impl<'a, H, I, const HEIGHT: usize> Unpin for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>
impl<'a, H, I, const HEIGHT: usize> !UnwindSafe for IndexedMerkleTreeCopy<'a, H, I, HEIGHT>
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
Mutably borrows from an owned value. Read more
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