pub enum MaskImpl {
Root {
database: Database<V2>,
childs: HashMap<Uuid, Mask>,
},
Attached {
parent: Mask,
owning_account: HashMap<AccountIndex, Account>,
token_owners: Option<HashMap<TokenId, AccountId>>,
id_to_addr: HashMap<AccountId, Address>,
last_location: Option<Address>,
depth: u8,
childs: HashMap<Uuid, Mask>,
hashes: HashesMatrix,
uuid: Uuid,
},
Unattached {
depth: u8,
childs: HashMap<Uuid, Mask>,
owning_account: HashMap<AccountIndex, Account>,
token_owners: Option<HashMap<TokenId, AccountId>>,
id_to_addr: HashMap<AccountId, Address>,
last_location: Option<Address>,
hashes: HashesMatrix,
uuid: Uuid,
},
}Variants§
Implementations§
Source§impl MaskImpl
impl MaskImpl
Sourcepub fn short(&self) -> MaskImplShort
pub fn short(&self) -> MaskImplShort
For debug purpose only
pub fn is_root(&self) -> bool
pub fn is_attached(&self) -> bool
pub(super) fn any_child_alive(&self) -> bool
pub fn set_token_owners(&mut self)
pub fn unset_token_owners(&mut self)
pub fn has_token_owners(&self) -> bool
Sourcepub fn register_mask(&mut self, self_mask: Mask, mask: Mask) -> Mask
pub fn register_mask(&mut self, self_mask: Mask, mask: Mask) -> Mask
Make mask a child of self
Sourcepub fn unregister_mask(
&mut self,
behavior: UnregisterBehavior,
remove_from_parent: bool,
)
pub fn unregister_mask( &mut self, behavior: UnregisterBehavior, remove_from_parent: bool, )
Detach this mask from its parent
pub fn remove_and_reparent(&mut self) -> Option<Mask>
pub fn set_parent( &mut self, parent: Mask, parent_last_filled: Option<Option<Address>>, )
fn uuid(&self) -> Uuid
pub fn get_parent(&self) -> Option<Mask>
pub fn unset_parent(&mut self, trigger_detach_signal: bool)
pub fn nmasks_to_root(&self) -> usize
Sourcepub fn get_hash(&mut self, addr: Address) -> Option<Fp>
pub fn get_hash(&mut self, addr: Address) -> Option<Fp>
get hash from mask, if present, else from its parent
pub fn commit_and_reparent(&mut self) -> Option<Mask>
Sourcepub fn commit_and_reparent_to_root(&mut self) -> Option<Mask>
pub fn commit_and_reparent_to_root(&mut self) -> Option<Mask>
commit all the masks from this mask all the way upto the root and return root mask while also detaching all intermediary masks.
Sourcepub fn parent_set_notify(
&mut self,
account_index: AccountIndex,
account: &Account,
)
pub fn parent_set_notify( &mut self, account_index: AccountIndex, account: &Account, )
called when parent sets an account; update local state
if the mask’s parent sets an account, we can prune an entry in the mask if the account in the parent is the same in the mask *)
pub fn remove_parent(&mut self) -> Option<Mask>
pub fn remove_child_uuid(&mut self, uuid: Uuid) -> Option<Mask>
fn childs(&mut self) -> &mut HashMap<Uuid, Mask>
pub fn get_cached_hash(&self, addr: &Address) -> Option<Fp>
pub fn set_cached_hash_unchecked(&mut self, addr: &Address, hash: Fp)
fn set_cached_hash(&mut self, addr: &Address, hash: Fp)
pub fn empty_hash_at_height(&mut self, height: usize) -> Fp
fn invalidate_hashes(&mut self, account_index: AccountIndex)
pub fn compute_hash_or_parent( &mut self, addr: Address, last_account: &Address, ) -> Fp
pub fn compute_hash_or_parent_for_merkle_path( &mut self, addr: Address, last_account: &Address, path: &mut AddressIterator, merkle_path: &mut Vec<MerklePath>, first: bool, ) -> Fp
pub fn depth(&self) -> u8
fn emulate_tree_to_get_hash_at(&mut self, addr: Address) -> Fp
fn emulate_tree_recursive( &mut self, addr: Address, last_account: &Address, ) -> Fp
fn emulate_merkle_path_recursive( &mut self, addr: Address, last_account: &Address, path: &mut AddressIterator, merkle_path: &mut Vec<MerklePath>, ) -> Fp
fn remove_own_account(&mut self, ids: &[AccountId])
pub(super) fn set_impl( &mut self, addr: Address, account: Box<Account>, child_to_ignore: Option<Uuid>, )
pub(super) fn transfert_hashes(&mut self, new_hashes: HashesMatrix)
pub(super) fn remove_accounts_without_notif(&mut self, ids: &[AccountId])
fn recurse_on_childs<F>(&mut self, fun: &mut F)
pub fn validate_inner_hashes(&mut self) -> Result<(), ()>
pub fn get_raw_inner_hashes(&self) -> Vec<(u64, Fp)>
pub fn set_raw_inner_hashes(&self, raw_hashes: Vec<(u64, Fp)>)
Trait Implementations§
Source§impl BaseLedger for MaskImpl
impl BaseLedger for MaskImpl
Source§fn fold<B, F>(&self, init: B, fun: F) -> B
fn fold<B, F>(&self, init: B, fun: F) -> B
fold over accounts in the ledger, passing the Merkle address
Source§fn fold_with_ignored_accounts<B, F>(
&self,
ignoreds: HashSet<AccountId>,
init: B,
fun: F,
) -> B
fn fold_with_ignored_accounts<B, F>( &self, ignoreds: HashSet<AccountId>, init: B, fun: F, ) -> B
the set of
account_ids are ledger elements to skip during the fold,
because they’re in a maskSource§fn fold_until<B, F>(&self, init: B, fun: F) -> B
fn fold_until<B, F>(&self, init: B, fun: F) -> B
fold until
fun returns ControlFlow::StopSource§fn token_owner(&self, token_id: TokenId) -> Option<AccountId>
fn token_owner(&self, token_id: TokenId) -> Option<AccountId>
Get the account id that owns a token.
Source§fn tokens(&self, public_key: CompressedPubKey) -> HashSet<TokenId>
fn tokens(&self, public_key: CompressedPubKey) -> HashSet<TokenId>
Get all of the tokens for which a public key has accounts.
fn location_of_account(&self, account_id: &AccountId) -> Option<Address>
fn location_of_account_batch( &self, account_ids: &[AccountId], ) -> Vec<(AccountId, Option<Address>)>
Source§fn get_or_create_account(
&mut self,
account_id: AccountId,
account: Account,
) -> Result<GetOrCreated, DatabaseError>
fn get_or_create_account( &mut self, account_id: AccountId, account: Account, ) -> Result<GetOrCreated, DatabaseError>
This may return an error if the ledger is full.
Source§fn last_filled(&self) -> Option<Address>
fn last_filled(&self) -> Option<Address>
for account locations in the ledger, the last (rightmost) filled location
fn get_uuid(&self) -> Uuid
Source§fn get_directory(&self) -> Option<PathBuf>
fn get_directory(&self) -> Option<PathBuf>
return Some
directory for ledgers that use a file system, else Nonefn get_account_hash(&mut self, account_index: AccountIndex) -> Option<Fp>
fn get(&self, addr: Address) -> Option<Box<Account>>
fn get_batch(&self, addr: &[Address]) -> Vec<(Address, Option<Box<Account>>)>
fn set(&mut self, addr: Address, account: Box<Account>)
fn set_batch(&mut self, list: &[(Address, Box<Account>)])
fn get_at_index(&self, index: AccountIndex) -> Option<Box<Account>>
fn set_at_index( &mut self, index: AccountIndex, account: Box<Account>, ) -> Result<(), ()>
fn index_of_account(&self, account_id: AccountId) -> Option<AccountIndex>
Source§fn merkle_root(&mut self) -> Fp
fn merkle_root(&mut self) -> Fp
meant to be a fast operation: the root hash is stored, rather
than calculated dynamically
fn merkle_path(&mut self, addr: Address) -> Vec<MerklePath>
fn merkle_path_at_index(&mut self, index: AccountIndex) -> Vec<MerklePath>
fn remove_accounts(&mut self, ids: &[AccountId])
Source§fn detached_signal(&mut self)
fn detached_signal(&mut self)
Triggers when the ledger has been detached and should no longer be
accessed.
fn depth(&self) -> u8
fn num_accounts(&self) -> usize
fn merkle_path_at_addr(&mut self, addr: Address) -> Vec<MerklePath>
fn get_inner_hash_at_addr(&mut self, addr: Address) -> Result<Fp, String>
fn set_inner_hash_at_addr( &mut self, _addr: Address, _hash: Fp, ) -> Result<(), ()>
fn set_all_accounts_rooted_at( &mut self, addr: Address, accounts: &[Box<Account>], ) -> Result<(), ()>
Source§fn get_all_accounts_rooted_at(
&self,
addr: Address,
) -> Option<Vec<(Address, Box<Account>)>>
fn get_all_accounts_rooted_at( &self, addr: Address, ) -> Option<Vec<(Address, Box<Account>)>>
Get all of the accounts that are in a subtree of the underlying Merkle
tree rooted at
address. The accounts are ordered by their addresses.fn make_space_for(&mut self, _space: usize)
Source§fn commit(&mut self)
fn commit(&mut self)
Used on mask only, has no effect with other implementation
Required for
LedgerIntf on masksfn set_batch_accounts(&mut self, list: &[(Address, Box<Account>)])
Auto Trait Implementations§
impl Freeze for MaskImpl
impl RefUnwindSafe for MaskImpl
impl Send for MaskImpl
impl Sync for MaskImpl
impl Unpin for MaskImpl
impl UnsafeUnpin for MaskImpl
impl UnwindSafe for MaskImpl
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§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>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.