pub struct ScannerDb {
config: Arc<Config>,
debug_skip_format_upgrades: bool,
format_change_handle: Option<DbFormatChangeThreadHandle>,
db: DiskDb,
}
Expand description
Wrapper struct to ensure high-level zebra-state
database access goes through the correct API.
rocksdb
allows concurrent writes through a shared reference,
so database instances are cloneable. When the final clone is dropped,
the database is closed.
Fields§
§config: Arc<Config>
§debug_skip_format_upgrades: bool
§format_change_handle: Option<DbFormatChangeThreadHandle>
§db: DiskDb
Implementations§
Source§impl ZebraDb
impl ZebraDb
Sourcepub fn contains_height(&self, height: Height) -> bool
pub fn contains_height(&self, height: Height) -> bool
Returns true
if height
is present in the finalized state.
Sourcepub fn hash(&self, height: Height) -> Option<Hash>
pub fn hash(&self, height: Height) -> Option<Hash>
Returns the finalized hash for a given block::Height
if it is present.
Sourcepub fn contains_hash(&self, hash: Hash) -> bool
pub fn contains_hash(&self, hash: Hash) -> bool
Returns true
if hash
is present in the finalized state.
Sourcepub fn height(&self, hash: Hash) -> Option<Height>
pub fn height(&self, hash: Hash) -> Option<Height>
Returns the height of the given block if it exists.
Sourcepub fn prev_block_hash_for_hash(&self, hash: Hash) -> Option<Hash>
pub fn prev_block_hash_for_hash(&self, hash: Hash) -> Option<Hash>
Returns the previous block hash for the given block hash in the finalized state.
Sourcepub fn prev_block_height_for_hash(&self, hash: Hash) -> Option<Height>
pub fn prev_block_height_for_hash(&self, hash: Hash) -> Option<Height>
Returns the previous block height for the given block hash in the finalized state.
Sourcepub fn block_header(&self, hash_or_height: HashOrHeight) -> Option<Arc<Header>>
pub fn block_header(&self, hash_or_height: HashOrHeight) -> Option<Arc<Header>>
Returns the block::Header
with block::Hash
or
Height
, if it exists in the finalized chain.
Sourcepub fn block(&self, hash_or_height: HashOrHeight) -> Option<Arc<Block>>
pub fn block(&self, hash_or_height: HashOrHeight) -> Option<Arc<Block>>
Returns the Block
with block::Hash
or
Height
, if it exists in the finalized chain.
Sourcepub fn block_and_size(
&self,
hash_or_height: HashOrHeight,
) -> Option<(Arc<Block>, usize)>
pub fn block_and_size( &self, hash_or_height: HashOrHeight, ) -> Option<(Arc<Block>, usize)>
Returns the Block
with block::Hash
or Height
, if it exists
in the finalized chain, and its serialized size.
Sourcepub fn sapling_tree_by_hash_or_height(
&self,
hash_or_height: HashOrHeight,
) -> Option<Arc<NoteCommitmentTree>>
pub fn sapling_tree_by_hash_or_height( &self, hash_or_height: HashOrHeight, ) -> Option<Arc<NoteCommitmentTree>>
Returns the Sapling note commitment tree
specified by
a hash or height, if it exists in the finalized state.
Sourcepub fn orchard_tree_by_hash_or_height(
&self,
hash_or_height: HashOrHeight,
) -> Option<Arc<NoteCommitmentTree>>
pub fn orchard_tree_by_hash_or_height( &self, hash_or_height: HashOrHeight, ) -> Option<Arc<NoteCommitmentTree>>
Returns the Orchard note commitment tree
specified by
a hash or height, if it exists in the finalized state.
Sourcepub fn finalized_tip_hash(&self) -> Hash
pub fn finalized_tip_hash(&self) -> Hash
Returns the hash of the current finalized tip block.
Sourcepub fn finalized_tip_height(&self) -> Option<Height>
pub fn finalized_tip_height(&self) -> Option<Height>
Returns the height of the current finalized tip block.
Sourcepub fn transaction(&self, hash: Hash) -> Option<(Arc<Transaction>, Height)>
pub fn transaction(&self, hash: Hash) -> Option<(Arc<Transaction>, Height)>
Returns the Transaction
with transaction::Hash
, and its Height
,
if a transaction with that hash exists in the finalized chain.
Sourcepub fn transactions_by_height(
&self,
height: Height,
) -> impl Iterator<Item = (TransactionLocation, Transaction)>
pub fn transactions_by_height( &self, height: Height, ) -> impl Iterator<Item = (TransactionLocation, Transaction)>
Returns an iterator of all Transaction
s for a provided block height in finalized state.
Sourcepub fn transactions_by_location_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (TransactionLocation, Transaction)>where
R: RangeBounds<TransactionLocation>,
pub fn transactions_by_location_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (TransactionLocation, Transaction)>where
R: RangeBounds<TransactionLocation>,
Returns an iterator of all Transaction
s in the provided range
of TransactionLocation
s in finalized state.
Sourcepub fn transaction_location(&self, hash: Hash) -> Option<TransactionLocation>
pub fn transaction_location(&self, hash: Hash) -> Option<TransactionLocation>
Returns the TransactionLocation
for transaction::Hash
,
if it exists in the finalized chain.
Sourcepub fn transaction_hash(&self, location: TransactionLocation) -> Option<Hash>
pub fn transaction_hash(&self, location: TransactionLocation) -> Option<Hash>
Returns the transaction::Hash
for TransactionLocation
,
if it exists in the finalized chain.
Sourcepub fn spending_transaction_hash(&self, spend: &Spend) -> Option<Hash>
pub fn spending_transaction_hash(&self, spend: &Spend) -> Option<Hash>
Returns the transaction::Hash
of the transaction that spent or revealed the given
transparent::OutPoint
or nullifier, if it is spent or revealed in the finalized state.
Sourcepub fn transaction_hashes_for_block(
&self,
hash_or_height: HashOrHeight,
) -> Option<Arc<[Hash]>>
pub fn transaction_hashes_for_block( &self, hash_or_height: HashOrHeight, ) -> Option<Arc<[Hash]>>
Returns the transaction::Hash
es in the block with hash_or_height
,
if it exists in this chain.
Hashes are returned in block order.
Returns None
if the block is not found.
Sourcepub fn write_batch(&self, batch: DiskWriteBatch) -> Result<(), Error>
pub fn write_batch(&self, batch: DiskWriteBatch) -> Result<(), Error>
Writes the given batch to the database.
Source§impl ZebraDb
impl ZebraDb
Sourcepub fn history_tree(&self) -> Arc<HistoryTree>
pub fn history_tree(&self) -> Arc<HistoryTree>
Returns the ZIP-221 history tree of the finalized tip.
If history trees have not been activated yet (pre-Heartwood), or the state is empty, returns an empty history tree.
Sourcepub fn finalized_value_pool(&self) -> ValueBalance<NonNegative>
pub fn finalized_value_pool(&self) -> ValueBalance<NonNegative>
Returns the stored ValueBalance
for the best chain at the finalized tip height.
Source§impl ZebraDb
impl ZebraDb
Sourcepub fn contains_sprout_nullifier(&self, sprout_nullifier: &Nullifier) -> bool
pub fn contains_sprout_nullifier(&self, sprout_nullifier: &Nullifier) -> bool
Returns true
if the finalized state contains sprout_nullifier
.
Sourcepub fn contains_sapling_nullifier(&self, sapling_nullifier: &Nullifier) -> bool
pub fn contains_sapling_nullifier(&self, sapling_nullifier: &Nullifier) -> bool
Returns true
if the finalized state contains sapling_nullifier
.
Sourcepub fn contains_orchard_nullifier(&self, orchard_nullifier: &Nullifier) -> bool
pub fn contains_orchard_nullifier(&self, orchard_nullifier: &Nullifier) -> bool
Returns true
if the finalized state contains orchard_nullifier
.
Sourcepub fn sprout_revealing_tx_loc(
&self,
sprout_nullifier: &Nullifier,
) -> Option<TransactionLocation>
pub fn sprout_revealing_tx_loc( &self, sprout_nullifier: &Nullifier, ) -> Option<TransactionLocation>
Returns the TransactionLocation
of the transaction that revealed
the given sprout::Nullifier
, if it is revealed in the finalized state and its
spending transaction hash has been indexed.
Sourcepub fn sapling_revealing_tx_loc(
&self,
sapling_nullifier: &Nullifier,
) -> Option<TransactionLocation>
pub fn sapling_revealing_tx_loc( &self, sapling_nullifier: &Nullifier, ) -> Option<TransactionLocation>
Returns the TransactionLocation
of the transaction that revealed
the given sapling::Nullifier
, if it is revealed in the finalized state and its
spending transaction hash has been indexed.
Sourcepub fn orchard_revealing_tx_loc(
&self,
orchard_nullifier: &Nullifier,
) -> Option<TransactionLocation>
pub fn orchard_revealing_tx_loc( &self, orchard_nullifier: &Nullifier, ) -> Option<TransactionLocation>
Returns the TransactionLocation
of the transaction that revealed
the given orchard::Nullifier
, if it is revealed in the finalized state and its
spending transaction hash has been indexed.
Sourcepub fn contains_sprout_anchor(&self, sprout_anchor: &Root) -> bool
pub fn contains_sprout_anchor(&self, sprout_anchor: &Root) -> bool
Returns true
if the finalized state contains sprout_anchor
.
Sourcepub fn contains_sapling_anchor(&self, sapling_anchor: &Root) -> bool
pub fn contains_sapling_anchor(&self, sapling_anchor: &Root) -> bool
Returns true
if the finalized state contains sapling_anchor
.
Sourcepub fn contains_orchard_anchor(&self, orchard_anchor: &Root) -> bool
pub fn contains_orchard_anchor(&self, orchard_anchor: &Root) -> bool
Returns true
if the finalized state contains orchard_anchor
.
Sourcepub fn sprout_tree_for_tip(&self) -> Arc<NoteCommitmentTree>
pub fn sprout_tree_for_tip(&self) -> Arc<NoteCommitmentTree>
Returns the Sprout note commitment tree of the finalized tip or the empty tree if the state is empty.
Sourcepub fn sprout_tree_by_anchor(
&self,
sprout_anchor: &Root,
) -> Option<Arc<NoteCommitmentTree>>
pub fn sprout_tree_by_anchor( &self, sprout_anchor: &Root, ) -> Option<Arc<NoteCommitmentTree>>
Returns the Sprout note commitment tree matching the given anchor.
This is used for interstitial tree building, which is unique to Sprout.
Sourcepub fn sprout_trees_full_map(&self) -> HashMap<Root, Arc<NoteCommitmentTree>>
pub fn sprout_trees_full_map(&self) -> HashMap<Root, Arc<NoteCommitmentTree>>
Returns all the Sprout note commitment trees in the database.
Calling this method can load a lot of data into RAM, and delay block commit transactions.
Sourcepub fn sprout_trees_full_tip(
&self,
) -> impl Iterator<Item = (RawBytes, Arc<NoteCommitmentTree>)>
pub fn sprout_trees_full_tip( &self, ) -> impl Iterator<Item = (RawBytes, Arc<NoteCommitmentTree>)>
Returns all the Sprout note commitment tip trees. We only store the sprout tree for the tip, so this method is mainly used in tests.
Sourcepub fn sapling_tree_for_tip(&self) -> Arc<NoteCommitmentTree>
pub fn sapling_tree_for_tip(&self) -> Arc<NoteCommitmentTree>
Returns the Sapling note commitment tree of the finalized tip or the empty tree if the state is empty.
Sourcepub fn sapling_tree_by_height(
&self,
height: &Height,
) -> Option<Arc<NoteCommitmentTree>>
pub fn sapling_tree_by_height( &self, height: &Height, ) -> Option<Arc<NoteCommitmentTree>>
Returns the Sapling note commitment tree matching the given block height, or None
if the
height is above the finalized tip.
Sourcepub fn sapling_tree_by_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
pub fn sapling_tree_by_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
Returns the Sapling note commitment trees in the supplied range, in increasing height order.
Sourcepub fn sapling_tree_by_reversed_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
pub fn sapling_tree_by_reversed_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
Returns the Sapling note commitment trees in the reversed range, in decreasing height order.
Sourcepub fn sapling_subtree_list_by_index_range(
&self,
range: impl RangeBounds<NoteCommitmentSubtreeIndex>,
) -> BTreeMap<NoteCommitmentSubtreeIndex, NoteCommitmentSubtreeData<Node>>
pub fn sapling_subtree_list_by_index_range( &self, range: impl RangeBounds<NoteCommitmentSubtreeIndex>, ) -> BTreeMap<NoteCommitmentSubtreeIndex, NoteCommitmentSubtreeData<Node>>
Returns a list of Sapling NoteCommitmentSubtree
s in the provided range.
Sourcepub fn orchard_tree_for_tip(&self) -> Arc<NoteCommitmentTree>
pub fn orchard_tree_for_tip(&self) -> Arc<NoteCommitmentTree>
Returns the Orchard note commitment tree of the finalized tip or the empty tree if the state is empty.
Sourcepub fn orchard_tree_by_height(
&self,
height: &Height,
) -> Option<Arc<NoteCommitmentTree>>
pub fn orchard_tree_by_height( &self, height: &Height, ) -> Option<Arc<NoteCommitmentTree>>
Returns the Orchard note commitment tree matching the given block height,
or None
if the height is above the finalized tip.
Sourcepub fn orchard_tree_by_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
pub fn orchard_tree_by_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
Returns the Orchard note commitment trees in the supplied range, in increasing height order.
Sourcepub fn orchard_tree_by_reversed_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
pub fn orchard_tree_by_reversed_height_range<R>(
&self,
range: R,
) -> impl Iterator<Item = (Height, Arc<NoteCommitmentTree>)>where
R: RangeBounds<Height>,
Returns the Orchard note commitment trees in the reversed range, in decreasing height order.
Sourcepub fn orchard_subtree_list_by_index_range(
&self,
range: impl RangeBounds<NoteCommitmentSubtreeIndex>,
) -> BTreeMap<NoteCommitmentSubtreeIndex, NoteCommitmentSubtreeData<Node>>
pub fn orchard_subtree_list_by_index_range( &self, range: impl RangeBounds<NoteCommitmentSubtreeIndex>, ) -> BTreeMap<NoteCommitmentSubtreeIndex, NoteCommitmentSubtreeData<Node>>
Returns a list of Orchard NoteCommitmentSubtree
s in the provided range.
Sourcepub fn note_commitment_trees_for_tip(&self) -> NoteCommitmentTrees
pub fn note_commitment_trees_for_tip(&self) -> NoteCommitmentTrees
Returns the shielded note commitment trees of the finalized tip or the empty trees if the state is empty. Additionally, returns the sapling and orchard subtrees for the finalized tip if the current subtree is finalizing in the tip, None otherwise.
Source§impl ZebraDb
impl ZebraDb
Sourcepub fn tx_location_by_spent_output_location(
&self,
output_location: &OutputLocation,
) -> Option<TransactionLocation>
pub fn tx_location_by_spent_output_location( &self, output_location: &OutputLocation, ) -> Option<TransactionLocation>
Returns the TransactionLocation
for a transaction that spent the output
at the provided OutputLocation
, if it is in the finalized state.
Sourcepub fn address_balance_location(
&self,
address: &Address,
) -> Option<AddressBalanceLocation>
pub fn address_balance_location( &self, address: &Address, ) -> Option<AddressBalanceLocation>
Returns the AddressBalanceLocation
for a transparent::Address
,
if it is in the finalized state.
Sourcepub fn address_balance(&self, address: &Address) -> Option<Amount<NonNegative>>
pub fn address_balance(&self, address: &Address) -> Option<Amount<NonNegative>>
Returns the balance for a transparent::Address
,
if it is in the finalized state.
Sourcepub fn address_location(&self, address: &Address) -> Option<OutputLocation>
pub fn address_location(&self, address: &Address) -> Option<OutputLocation>
Returns the first output that sent funds to a transparent::Address
,
if it is in the finalized state.
This location is used as an efficient index key for addresses.
Sourcepub fn output_location(&self, outpoint: &OutPoint) -> Option<OutputLocation>
pub fn output_location(&self, outpoint: &OutPoint) -> Option<OutputLocation>
Returns the OutputLocation
for a transparent::OutPoint
.
This method returns the locations of spent and unspent outpoints.
Returns None
if the output was never in the finalized state.
Sourcepub fn utxo(&self, outpoint: &OutPoint) -> Option<OrderedUtxo>
pub fn utxo(&self, outpoint: &OutPoint) -> Option<OrderedUtxo>
Returns the transparent output for a transparent::OutPoint
,
if it is unspent in the finalized state.
Sourcepub fn spending_tx_loc(
&self,
outpoint: &OutPoint,
) -> Option<TransactionLocation>
pub fn spending_tx_loc( &self, outpoint: &OutPoint, ) -> Option<TransactionLocation>
Returns the TransactionLocation
of the transaction that spent the given
transparent::OutPoint
, if it is unspent in the finalized state and its
spending transaction hash has been indexed.
Sourcepub fn utxo_by_location(
&self,
output_location: OutputLocation,
) -> Option<OrderedUtxo>
pub fn utxo_by_location( &self, output_location: OutputLocation, ) -> Option<OrderedUtxo>
Returns the transparent output for an OutputLocation
,
if it is unspent in the finalized state.
Sourcepub fn address_utxos(
&self,
address: &Address,
) -> BTreeMap<OutputLocation, Output>
pub fn address_utxos( &self, address: &Address, ) -> BTreeMap<OutputLocation, Output>
Returns the unspent transparent outputs for a transparent::Address
,
if they are in the finalized state.
Sourcepub fn address_utxo_locations(
&self,
address_location: OutputLocation,
) -> BTreeSet<AddressUnspentOutput>
pub fn address_utxo_locations( &self, address_location: OutputLocation, ) -> BTreeSet<AddressUnspentOutput>
Returns the unspent transparent output locations for a transparent::Address
,
if they are in the finalized state.
Sourcepub fn tx_id_by_location(
&self,
tx_location: TransactionLocation,
) -> Option<Hash>
pub fn tx_id_by_location( &self, tx_location: TransactionLocation, ) -> Option<Hash>
Returns the transaction hash for an TransactionLocation
.
Sourcepub fn address_tx_ids(
&self,
address: &Address,
query_height_range: RangeInclusive<Height>,
) -> BTreeMap<TransactionLocation, Hash>
pub fn address_tx_ids( &self, address: &Address, query_height_range: RangeInclusive<Height>, ) -> BTreeMap<TransactionLocation, Hash>
Returns the transaction IDs that sent or received funds to address
,
in the finalized chain query_height_range
.
If address has no finalized sends or receives,
or the query_height_range
is totally outside the finalized block range,
returns an empty list.
Sourcepub fn address_transaction_locations(
&self,
address_location: OutputLocation,
query_height_range: RangeInclusive<Height>,
) -> BTreeSet<AddressTransaction>
pub fn address_transaction_locations( &self, address_location: OutputLocation, query_height_range: RangeInclusive<Height>, ) -> BTreeSet<AddressTransaction>
Returns the locations of any transactions that sent or received from a transparent::Address
,
if they are in the finalized state.
Sourcepub fn partial_finalized_transparent_balance(
&self,
addresses: &HashSet<Address>,
) -> Amount<NonNegative>
pub fn partial_finalized_transparent_balance( &self, addresses: &HashSet<Address>, ) -> Amount<NonNegative>
Returns the total transparent balance for addresses
in the finalized chain.
If none of the addresses has a balance, returns zero.
§Correctness
Callers should apply the non-finalized balance change for addresses
to the returned balance.
The total balance will only be correct if the non-finalized chain matches the finalized state. Specifically, the root of the partial non-finalized chain must be a child block of the finalized tip.
Sourcepub fn partial_finalized_address_utxos(
&self,
addresses: &HashSet<Address>,
) -> BTreeMap<OutputLocation, Output>
pub fn partial_finalized_address_utxos( &self, addresses: &HashSet<Address>, ) -> BTreeMap<OutputLocation, Output>
Returns the UTXOs for addresses
in the finalized chain.
If none of the addresses has finalized UTXOs, returns an empty list.
§Correctness
Callers should apply the non-finalized UTXO changes for addresses
to the returned UTXOs.
The UTXOs will only be correct if the non-finalized chain matches or overlaps with the finalized state.
Specifically, a block in the partial chain must be a child block of the finalized tip. (But the child block does not have to be the partial chain root.)
Sourcepub fn partial_finalized_transparent_tx_ids(
&self,
addresses: &HashSet<Address>,
query_height_range: RangeInclusive<Height>,
) -> BTreeMap<TransactionLocation, Hash>
pub fn partial_finalized_transparent_tx_ids( &self, addresses: &HashSet<Address>, query_height_range: RangeInclusive<Height>, ) -> BTreeMap<TransactionLocation, Hash>
Returns the transaction IDs that sent or received funds to addresses
,
in the finalized chain query_height_range
.
If none of the addresses has finalized sends or receives,
or the query_height_range
is totally outside the finalized block range,
returns an empty list.
§Correctness
Callers should combine the non-finalized transactions for addresses
with the returned transactions.
The transaction IDs will only be correct if the non-finalized chain matches or overlaps with the finalized state.
Specifically, a block in the partial chain must be a child block of the finalized tip. (But the child block does not have to be the partial chain root.)
This condition does not apply if there is only one address. Since address transactions are only appended by blocks, and this query reads them in order, it is impossible to get inconsistent transactions for a single address.
Source§impl ZebraDb
impl ZebraDb
Sourcepub fn db(&self) -> &DiskDb
pub fn db(&self) -> &DiskDb
Returns the inner database.
This is a test-only and shielded-scan-only method, because it allows write access and raw read access to the RocksDB instance.
Sourcepub fn set_finalized_value_pool(
&self,
fake_value_pool: ValueBalance<NonNegative>,
)
pub fn set_finalized_value_pool( &self, fake_value_pool: ValueBalance<NonNegative>, )
Allow to set up a fake value pool in the database for testing purposes.
Sourcepub fn populate_with_anchors(&self, block: &Block)
pub fn populate_with_anchors(&self, block: &Block)
Artificially prime the note commitment tree anchor sets with anchors referenced in a block, for testing purposes only.
Source§impl ZebraDb
impl ZebraDb
Sourcepub fn new(
config: &Config,
db_kind: impl AsRef<str>,
format_version_in_code: &Version,
network: &Network,
debug_skip_format_upgrades: bool,
column_families_in_code: impl IntoIterator<Item = String>,
read_only: bool,
) -> ZebraDb
pub fn new( config: &Config, db_kind: impl AsRef<str>, format_version_in_code: &Version, network: &Network, debug_skip_format_upgrades: bool, column_families_in_code: impl IntoIterator<Item = String>, read_only: bool, ) -> ZebraDb
Opens or creates the database at a path based on the kind, major version and network, with the supplied column families, preserving any existing column families, and returns a shared high-level typed database wrapper.
If debug_skip_format_upgrades
is true, don’t do any format upgrades or format checks.
This argument is only used when running tests, it is ignored in production code.
Sourcepub fn spawn_format_change(&mut self, format_change: DbFormatChange)
pub fn spawn_format_change(&mut self, format_change: DbFormatChange)
Launch any required format changes or format checks, and store their thread handle.
Sourcepub fn format_version_in_code(&self) -> Version
pub fn format_version_in_code(&self) -> Version
Returns the format version of the running code that created this ZebraDb
instance in memory.
Sourcepub fn major_version(&self) -> u64
pub fn major_version(&self) -> u64
Returns the fixed major version for this database.
Sourcepub fn format_version_on_disk(
&self,
) -> Result<Option<Version>, Box<dyn Error + Sync + Send>>
pub fn format_version_on_disk( &self, ) -> Result<Option<Version>, Box<dyn Error + Sync + Send>>
Returns the format version of this database on disk.
See database_format_version_on_disk()
for details.
Sourcepub fn path(&self) -> &Path
pub fn path(&self) -> &Path
Returns the Path
where the files used by this database are located.
Sourcepub fn check_for_panics(&mut self)
pub fn check_for_panics(&mut self)
Check for panics in code running in spawned threads. If a thread exited with a panic, resume that panic.
This method should be called regularly, so that panics are detected as soon as possible.
Sourcepub fn try_catch_up_with_primary(&self) -> Result<(), Error>
pub fn try_catch_up_with_primary(&self) -> Result<(), Error>
When called with a secondary DB instance, tries to catch up with the primary DB instance
Sourcepub fn shutdown(&mut self, force: bool)
pub fn shutdown(&mut self, force: bool)
Shut down the database, cleaning up background tasks and ephemeral data.
If force
is true, clean up regardless of any shared references.
force
can cause errors accessing the database from other shared references.
It should only be used in debugging or test code, immediately before a manual shutdown.
See DiskDb::shutdown
for details.
Sourcepub fn print_db_metrics(&self)
pub fn print_db_metrics(&self)
Logs metrics related to the underlying RocksDB instance.
This function prints various metrics and statistics about the RocksDB database, such as disk usage, memory usage, and other performance-related metrics.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ZebraDb
impl !RefUnwindSafe for ZebraDb
impl Send for ZebraDb
impl Sync for ZebraDb
impl Unpin for ZebraDb
impl !UnwindSafe for ZebraDb
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,
§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,
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,
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,
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,
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,
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,
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,
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,
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,
§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>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
§fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
§fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
§fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
§fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
§fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
§fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
§fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
§fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
§fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
§fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
§fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
§fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
§fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
§fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
§fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
§fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
§fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
§fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
§fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
] or
a color-specific method, such as [OwoColorize::green
], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
] or
a color-specific method, such as [OwoColorize::on_yellow
], Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, 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,
§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,
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,
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
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
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
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<Response, Error> ResponseResult<Response, Error> for Response
impl<Response, Error> ResponseResult<Response, Error> for Response
Source§fn into_result(self) -> Result<Response, Error>
fn into_result(self) -> Result<Response, Error>
Result
that can be sent as a response.§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
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
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
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
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
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
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
.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
.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
.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
.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
.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
.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
.tap_deref()
only in debug builds, and is erased in release
builds.