Struct ScannerDb

Source
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

Source

pub fn is_empty(&self) -> bool

Returns true if the database is empty.

Source

pub fn tip(&self) -> Option<(Height, Hash)>

Returns the tip height and hash, if there is one.

Source

pub fn contains_height(&self, height: Height) -> bool

Returns true if height is present in the finalized state.

Source

pub fn hash(&self, height: Height) -> Option<Hash>

Returns the finalized hash for a given block::Height if it is present.

Source

pub fn contains_hash(&self, hash: Hash) -> bool

Returns true if hash is present in the finalized state.

Source

pub fn height(&self, hash: Hash) -> Option<Height>

Returns the height of the given block if it exists.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn finalized_tip_hash(&self) -> Hash

Returns the hash of the current finalized tip block.

Source

pub fn finalized_tip_height(&self) -> Option<Height>

Returns the height of the current finalized tip block.

Source

pub fn tip_block(&self) -> Option<Arc<Block>>

Returns the tip block, if there is one.

Source

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.

Source

pub fn transactions_by_height( &self, height: Height, ) -> impl Iterator<Item = (TransactionLocation, Transaction)>

Returns an iterator of all Transactions for a provided block height in finalized state.

Source

pub fn transactions_by_location_range<R>( &self, range: R, ) -> impl Iterator<Item = (TransactionLocation, Transaction)>

Returns an iterator of all Transactions in the provided range of TransactionLocations in finalized state.

Source

pub fn transaction_location(&self, hash: Hash) -> Option<TransactionLocation>

Returns the TransactionLocation for transaction::Hash, if it exists in the finalized chain.

Source

pub fn transaction_hash(&self, location: TransactionLocation) -> Option<Hash>

Returns the transaction::Hash for TransactionLocation, if it exists in the finalized chain.

Source

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.

Source

pub fn transaction_hashes_for_block( &self, hash_or_height: HashOrHeight, ) -> Option<Arc<[Hash]>>

Returns the transaction::Hashes 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.

Source

pub fn write_batch(&self, batch: DiskWriteBatch) -> Result<(), Error>

Writes the given batch to the database.

Source§

impl ZebraDb

Source

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.

Source

pub fn finalized_value_pool(&self) -> ValueBalance<NonNegative>

Returns the stored ValueBalance for the best chain at the finalized tip height.

Source§

impl ZebraDb

Source

pub fn contains_sprout_nullifier(&self, sprout_nullifier: &Nullifier) -> bool

Returns true if the finalized state contains sprout_nullifier.

Source

pub fn contains_sapling_nullifier(&self, sapling_nullifier: &Nullifier) -> bool

Returns true if the finalized state contains sapling_nullifier.

Source

pub fn contains_orchard_nullifier(&self, orchard_nullifier: &Nullifier) -> bool

Returns true if the finalized state contains orchard_nullifier.

Source

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.

Source

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.

Source

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.

Source

pub fn contains_sprout_anchor(&self, sprout_anchor: &Root) -> bool

Returns true if the finalized state contains sprout_anchor.

Source

pub fn contains_sapling_anchor(&self, sapling_anchor: &Root) -> bool

Returns true if the finalized state contains sapling_anchor.

Source

pub fn contains_orchard_anchor(&self, orchard_anchor: &Root) -> bool

Returns true if the finalized state contains orchard_anchor.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn sapling_subtree_list_by_index_range( &self, range: impl RangeBounds<NoteCommitmentSubtreeIndex>, ) -> BTreeMap<NoteCommitmentSubtreeIndex, NoteCommitmentSubtreeData<Node>>

Returns a list of Sapling NoteCommitmentSubtrees in the provided range.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn orchard_subtree_list_by_index_range( &self, range: impl RangeBounds<NoteCommitmentSubtreeIndex>, ) -> BTreeMap<NoteCommitmentSubtreeIndex, NoteCommitmentSubtreeData<Node>>

Returns a list of Orchard NoteCommitmentSubtrees in the provided range.

Source

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

Source

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.

Source

pub fn address_balance_location( &self, address: &Address, ) -> Option<AddressBalanceLocation>

Returns the AddressBalanceLocation for a transparent::Address, if it is in the finalized state.

Source

pub fn address_balance(&self, address: &Address) -> Option<Amount<NonNegative>>

Returns the balance for a transparent::Address, if it is in the finalized state.

Source

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.

Source

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.

Source

pub fn utxo(&self, outpoint: &OutPoint) -> Option<OrderedUtxo>

Returns the transparent output for a transparent::OutPoint, if it is unspent in the finalized state.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn tx_id_by_location( &self, tx_location: TransactionLocation, ) -> Option<Hash>

Returns the transaction hash for an TransactionLocation.

Source

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.

Source

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.

Source

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.

Source

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.)

Source

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

Source

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.

Source

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.

Source

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

Source

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.

Source

pub fn spawn_format_change(&mut self, format_change: DbFormatChange)

Launch any required format changes or format checks, and store their thread handle.

Source

pub fn config(&self) -> &Config

Returns config for this database.

Source

pub fn db_kind(&self) -> String

Returns the configured database kind for this database.

Source

pub fn format_version_in_code(&self) -> Version

Returns the format version of the running code that created this ZebraDb instance in memory.

Source

pub fn major_version(&self) -> u64

Returns the fixed major version for this database.

Source

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.

Source

pub fn network(&self) -> Network

Returns the configured network for this database.

Source

pub fn path(&self) -> &Path

Returns the Path where the files used by this database are located.

Source

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.

Source

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

Source

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.

Source

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.

Source

pub fn size(&self) -> u64

Returns the estimated total disk space usage of the database.

Trait Implementations§

Source§

impl Clone for ZebraDb

Source§

fn clone(&self) -> ZebraDb

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ZebraDb

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Deref for ZebraDb

Source§

type Target = DiskDb

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<ZebraDb as Deref>::Target

Dereferences the value.
Source§

impl Drop for ZebraDb

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DynClone for T
where T: Clone,

§

impl<T> FmtForward for T

§

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,

Causes self to use its Display implementation when Debug-formatted.
§

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,

Causes self to use its LowerHex implementation when Debug-formatted.
§

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,

Causes self to use its Pointer implementation when Debug-formatted.
§

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,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either 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,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either 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>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either [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,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either [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>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where 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) -> R
where 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) -> R
where 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<Response, Error> ResponseResult<Response, Error> for Response

Source§

fn into_result(self) -> Result<Response, Error>

Converts the type into a Result that can be sent as a response.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

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

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

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
where Self: BorrowMut<B>, B: ?Sized,

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
where Self: AsRef<R>, R: ?Sized,

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
where Self: AsMut<R>, R: ?Sized,

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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T