pub struct MockChain { /* private fields */ }testing only.Expand description
The MockChain simulates a simplified blockchain environment for testing purposes.
The typical usage of a mock chain is:
- Creating it using a
MockChainBuilder, which allows adding accounts and notes to the genesis state. - Creating transactions against the chain state and executing them.
- Adding executed or proven transactions to the set of pending transactions (the “mempool”),
e.g. using
MockChain::add_pending_executed_transaction. - Proving a block, which adds all pending transactions to the chain state, e.g. using
MockChain::prove_next_block.
The mock chain uses the batch and block provers underneath to process pending transactions, so the generated blocks are realistic and indistinguishable from a real node. The only caveat is that no real ZK proofs are generated or validated as part of transaction, batch or block building.
§Examples
§Executing a simple transaction
// Build a genesis state for a mock chain using a MockChainBuilder.
// --------------------------------------------------------------------------------------------
let mut builder = MockChain::builder();
// Add a recipient wallet.
let receiver = builder.add_existing_wallet(Auth::BasicAuth)?;
// Add a wallet with assets.
let sender = builder.add_existing_wallet(Auth::IncrNonce)?;
let fungible_asset = FungibleAsset::mock(10).unwrap_fungible();
// Add a P2ID note with a fungible asset to the chain.
let note = builder.add_p2id_note(
sender.id(),
receiver.id(),
&[Asset::Fungible(fungible_asset)],
NoteType::Public,
)?;
let mut mock_chain: MockChain = builder.build()?;
// Create a transaction against the receiver account consuming the note.
// --------------------------------------------------------------------------------------------
let transaction = mock_chain
.build_tx_context(receiver.id(), &[note.id()], &[])?
.build()?
.execute()
.await?;
// Add the transaction to the chain state.
// --------------------------------------------------------------------------------------------
// Add the transaction to the mock chain's "mempool" of pending transactions.
mock_chain.add_pending_executed_transaction(&transaction)?;
// Prove the next block to include the transaction in the chain state.
mock_chain.prove_next_block()?;
// The receiver account should now have the asset in its account vault.
assert_eq!(
mock_chain
.committed_account(receiver.id())?
.vault()
.get_balance(fungible_asset.faucet_id())?,
fungible_asset.amount()
);§Create mock objects and build a transaction context
let mut builder = MockChain::builder();
let faucet = builder.create_new_faucet(Auth::BasicAuth, "USDT", 100_000)?;
let asset = Asset::from(FungibleAsset::new(faucet.id(), 10)?);
let sender = builder.create_new_wallet(Auth::BasicAuth)?;
let target = builder.create_new_wallet(Auth::BasicAuth)?;
let note = builder.add_p2id_note(faucet.id(), target.id(), &[asset], NoteType::Public)?;
let mock_chain = builder.build()?;
// The target account is a new account so we move it into the build_tx_context, since the
// chain's committed accounts do not yet contain it.
let tx_context = mock_chain.build_tx_context(target, &[note.id()], &[])?.build()?;
let executed_transaction = tx_context.execute().await?;Implementations§
Source§impl MockChain
impl MockChain
Sourcepub const TIMESTAMP_START_SECS: u32 = 1700000000
pub const TIMESTAMP_START_SECS: u32 = 1700000000
The timestamp of the genesis block of the chain. Chosen as an easily readable number.
Sourcepub const TIMESTAMP_STEP_SECS: u32 = 10
pub const TIMESTAMP_STEP_SECS: u32 = 10
The number of seconds by which a block’s timestamp increases over the previous block’s
timestamp, unless overwritten when calling Self::prove_next_block_at.
Sourcepub fn builder() -> MockChainBuilder
pub fn builder() -> MockChainBuilder
Returns a new, empty MockChainBuilder.
Sourcepub fn blockchain(&self) -> &Blockchain
pub fn blockchain(&self) -> &Blockchain
Returns a reference to the current Blockchain.
Sourcepub fn latest_partial_blockchain(&self) -> PartialBlockchain
pub fn latest_partial_blockchain(&self) -> PartialBlockchain
Returns a PartialBlockchain instantiated from the current Blockchain and with
authentication paths for all all blocks in the chain.
Sourcepub fn latest_selective_partial_blockchain(
&self,
reference_blocks: impl IntoIterator<Item = BlockNumber>,
) -> Result<(BlockHeader, PartialBlockchain), Error>
pub fn latest_selective_partial_blockchain( &self, reference_blocks: impl IntoIterator<Item = BlockNumber>, ) -> Result<(BlockHeader, PartialBlockchain), Error>
Creates a new PartialBlockchain with all reference blocks in the given iterator except
for the latest block header in the chain and returns that latest block header.
The intended use for the latest block header is to become the reference block of a new transaction batch or block.
Sourcepub fn selective_partial_blockchain(
&self,
reference_block: BlockNumber,
reference_blocks: impl IntoIterator<Item = BlockNumber>,
) -> Result<(BlockHeader, PartialBlockchain), Error>
pub fn selective_partial_blockchain( &self, reference_block: BlockNumber, reference_blocks: impl IntoIterator<Item = BlockNumber>, ) -> Result<(BlockHeader, PartialBlockchain), Error>
Creates a new PartialBlockchain with all reference blocks in the given iterator except
for the reference block header in the chain and returns that reference block header.
The intended use for the reference block header is to become the reference block of a new transaction batch or block.
Sourcepub fn account_witnesses(
&self,
account_ids: impl IntoIterator<Item = AccountId>,
) -> BTreeMap<AccountId, AccountWitness>
pub fn account_witnesses( &self, account_ids: impl IntoIterator<Item = AccountId>, ) -> BTreeMap<AccountId, AccountWitness>
Returns a map of AccountWitnesses for the requested account IDs from the current
AccountTree in the chain.
Sourcepub fn nullifier_witnesses(
&self,
nullifiers: impl IntoIterator<Item = Nullifier>,
) -> BTreeMap<Nullifier, NullifierWitness>
pub fn nullifier_witnesses( &self, nullifiers: impl IntoIterator<Item = Nullifier>, ) -> BTreeMap<Nullifier, NullifierWitness>
Returns a map of NullifierWitnesses for the requested nullifiers from the current
NullifierTree in the chain.
Sourcepub fn unauthenticated_note_proofs(
&self,
notes: impl IntoIterator<Item = NoteId>,
) -> BTreeMap<NoteId, NoteInclusionProof>
pub fn unauthenticated_note_proofs( &self, notes: impl IntoIterator<Item = NoteId>, ) -> BTreeMap<NoteId, NoteInclusionProof>
Returns all note inclusion proofs for the requested note IDs, if they are available for consumption. Therefore, not all of the requested notes will be guaranteed to have an entry in the returned map.
Sourcepub fn genesis_block_header(&self) -> BlockHeader
pub fn genesis_block_header(&self) -> BlockHeader
Returns the genesis BlockHeader of the chain.
Sourcepub fn latest_block_header(&self) -> BlockHeader
pub fn latest_block_header(&self) -> BlockHeader
Returns the latest BlockHeader in the chain.
Sourcepub fn latest_block(&self) -> ProvenBlock
pub fn latest_block(&self) -> ProvenBlock
Returns the latest ProvenBlock in the chain.
Sourcepub fn block_header(&self, block_number: usize) -> BlockHeader
pub fn block_header(&self, block_number: usize) -> BlockHeader
Returns the BlockHeader with the specified block_number.
§Panics
- If the block number does not exist in the chain.
Sourcepub fn proven_blocks(&self) -> &[ProvenBlock]
pub fn proven_blocks(&self) -> &[ProvenBlock]
Returns a reference to slice of all created proven blocks.
Sourcepub fn native_asset_id(&self) -> AccountId
pub fn native_asset_id(&self) -> AccountId
Returns the AccountId of the faucet whose assets are accepted for fee payments in the
transaction kernel, or in other words, the native asset of the blockchain.
This value is taken from the genesis block because it is assumed not to change throughout the chain’s lifecycle.
Sourcepub fn nullifier_tree(&self) -> &NullifierTree
pub fn nullifier_tree(&self) -> &NullifierTree
Returns a reference to the nullifier tree.
Sourcepub fn committed_notes(&self) -> &BTreeMap<NoteId, MockChainNote>
pub fn committed_notes(&self) -> &BTreeMap<NoteId, MockChainNote>
Returns the map of note IDs to committed notes.
These notes are committed for authenticated consumption.
Sourcepub fn get_public_note(&self, note_id: &NoteId) -> Option<InputNote>
pub fn get_public_note(&self, note_id: &NoteId) -> Option<InputNote>
Returns an InputNote for the given note ID. If the note does not exist or is not
public, None is returned.
Sourcepub fn committed_account(
&self,
account_id: AccountId,
) -> Result<&Account, Error>
pub fn committed_account( &self, account_id: AccountId, ) -> Result<&Account, Error>
Returns a reference to the account identified by the given account ID.
The account is retrieved with the latest state known to the MockChain.
Sourcepub fn account_tree(&self) -> &AccountTree
pub fn account_tree(&self) -> &AccountTree
Returns a reference to the AccountTree of the chain.
Sourcepub fn propose_transaction_batch<I>(
&self,
txs: impl IntoIterator<Item = ProvenTransaction, IntoIter = I>,
) -> Result<ProposedBatch, Error>
pub fn propose_transaction_batch<I>( &self, txs: impl IntoIterator<Item = ProvenTransaction, IntoIter = I>, ) -> Result<ProposedBatch, Error>
Proposes a new transaction batch from the provided transactions and returns it.
This method does not modify the chain state.
Sourcepub fn prove_transaction_batch(
&self,
proposed_batch: ProposedBatch,
) -> Result<ProvenBatch, Error>
pub fn prove_transaction_batch( &self, proposed_batch: ProposedBatch, ) -> Result<ProvenBatch, Error>
Mock-proves a proposed transaction batch from the provided ProposedBatch and returns it.
This method does not modify the chain state.
Sourcepub fn propose_block_at<I>(
&self,
batches: impl IntoIterator<Item = ProvenBatch, IntoIter = I>,
timestamp: u32,
) -> Result<ProposedBlock, Error>
pub fn propose_block_at<I>( &self, batches: impl IntoIterator<Item = ProvenBatch, IntoIter = I>, timestamp: u32, ) -> Result<ProposedBlock, Error>
Proposes a new block from the provided batches with the given timestamp and returns it.
This method does not modify the chain state.
Sourcepub fn propose_block<I>(
&self,
batches: impl IntoIterator<Item = ProvenBatch, IntoIter = I>,
) -> Result<ProposedBlock, Error>
pub fn propose_block<I>( &self, batches: impl IntoIterator<Item = ProvenBatch, IntoIter = I>, ) -> Result<ProposedBlock, Error>
Proposes a new block from the provided batches and returns it.
This method does not modify the chain state.
Sourcepub fn build_tx_context_at(
&self,
reference_block: impl Into<BlockNumber>,
input: impl Into<TxContextInput>,
note_ids: &[NoteId],
unauthenticated_notes: &[Note],
) -> Result<TransactionContextBuilder, Error>
pub fn build_tx_context_at( &self, reference_block: impl Into<BlockNumber>, input: impl Into<TxContextInput>, note_ids: &[NoteId], unauthenticated_notes: &[Note], ) -> Result<TransactionContextBuilder, Error>
Initializes a TransactionContextBuilder for executing against a specific block number.
Depending on the provided input, the builder is initialized differently:
TxContextInput::AccountId: Initialize the builder withTransactionInputsfetched from the chain for the public account identified by the ID.TxContextInput::Account: Initialize the builder withTransactionInputswhere the account is passed as-is to the inputs.
In all cases, if the chain contains authenticator for the account, they are added to the builder.
TxContextInput::Account can be used to build a chain of transactions against the same
account that build on top of each other. For example, transaction A modifies an account
from state 0 to 1, and transaction B modifies it from state 1 to 2.
Sourcepub fn build_tx_context(
&self,
input: impl Into<TxContextInput>,
note_ids: &[NoteId],
unauthenticated_notes: &[Note],
) -> Result<TransactionContextBuilder, Error>
pub fn build_tx_context( &self, input: impl Into<TxContextInput>, note_ids: &[NoteId], unauthenticated_notes: &[Note], ) -> Result<TransactionContextBuilder, Error>
Initializes a TransactionContextBuilder for executing against the last block header.
This is a wrapper around Self::build_tx_context_at which uses the latest block as the
reference block. See that function’s docs for details.
Sourcepub fn get_transaction_inputs_at(
&self,
reference_block: BlockNumber,
account: impl Into<PartialAccount>,
notes: &[NoteId],
unauthenticated_notes: &[Note],
) -> Result<TransactionInputs, Error>
pub fn get_transaction_inputs_at( &self, reference_block: BlockNumber, account: impl Into<PartialAccount>, notes: &[NoteId], unauthenticated_notes: &[Note], ) -> Result<TransactionInputs, Error>
Returns a valid TransactionInputs for the specified entities, executing against
a specific block number.
Sourcepub fn get_transaction_inputs(
&self,
account: impl Into<PartialAccount>,
notes: &[NoteId],
unauthenticated_notes: &[Note],
) -> Result<TransactionInputs, Error>
pub fn get_transaction_inputs( &self, account: impl Into<PartialAccount>, notes: &[NoteId], unauthenticated_notes: &[Note], ) -> Result<TransactionInputs, Error>
Returns a valid TransactionInputs for the specified entities.
Sourcepub fn get_batch_inputs(
&self,
tx_reference_blocks: impl IntoIterator<Item = BlockNumber>,
unauthenticated_notes: impl Iterator<Item = NoteId>,
) -> Result<(BlockHeader, PartialBlockchain, BTreeMap<NoteId, NoteInclusionProof>), Error>
pub fn get_batch_inputs( &self, tx_reference_blocks: impl IntoIterator<Item = BlockNumber>, unauthenticated_notes: impl Iterator<Item = NoteId>, ) -> Result<(BlockHeader, PartialBlockchain, BTreeMap<NoteId, NoteInclusionProof>), Error>
Returns inputs for a transaction batch for all the reference blocks of the provided transactions.
Sourcepub fn get_foreign_account_inputs(
&self,
account_id: AccountId,
) -> Result<(Account, AccountWitness), Error>
pub fn get_foreign_account_inputs( &self, account_id: AccountId, ) -> Result<(Account, AccountWitness), Error>
Gets foreign account inputs to execute FPI transactions.
Used in tests to get foreign account inputs for FPI calls.
Sourcepub fn get_block_inputs<'batch, I>(
&self,
batch_iter: impl IntoIterator<Item = &'batch ProvenBatch, IntoIter = I>,
) -> Result<BlockInputs, Error>
pub fn get_block_inputs<'batch, I>( &self, batch_iter: impl IntoIterator<Item = &'batch ProvenBatch, IntoIter = I>, ) -> Result<BlockInputs, Error>
Gets the inputs for a block for the provided batches.
Sourcepub fn prove_next_block(&mut self) -> Result<ProvenBlock, Error>
pub fn prove_next_block(&mut self) -> Result<ProvenBlock, Error>
Proves the next block in the mock chain.
This will commit all the currently pending transactions into the chain state.
Sourcepub fn prove_next_block_at(
&mut self,
timestamp: u32,
) -> Result<ProvenBlock, Error>
pub fn prove_next_block_at( &mut self, timestamp: u32, ) -> Result<ProvenBlock, Error>
Proves the next block in the mock chain at the given timestamp.
This will commit all the currently pending transactions into the chain state.
Sourcepub fn prove_until_block(
&mut self,
target_block_num: impl Into<BlockNumber>,
) -> Result<ProvenBlock, Error>
pub fn prove_until_block( &mut self, target_block_num: impl Into<BlockNumber>, ) -> Result<ProvenBlock, Error>
Proves new blocks until the block with the given target block number has been created.
For example, if the latest block is 5 and this function is called with 10, then blocks
6..=10 will be created and block 10 will be returned.
§Panics
Panics if:
- the given block number is smaller or equal to the number of the latest block in the chain.
Sourcepub fn add_pending_executed_transaction(
&mut self,
transaction: &ExecutedTransaction,
) -> Result<(), Error>
pub fn add_pending_executed_transaction( &mut self, transaction: &ExecutedTransaction, ) -> Result<(), Error>
Adds the given ExecutedTransaction to the list of pending transactions.
A block has to be created to apply the transaction effects to the chain state, e.g. using
MockChain::prove_next_block.
Sourcepub fn add_pending_proven_transaction(&mut self, transaction: ProvenTransaction)
pub fn add_pending_proven_transaction(&mut self, transaction: ProvenTransaction)
Adds the given ProvenTransaction to the list of pending transactions.
A block has to be created to apply the transaction effects to the chain state, e.g. using
MockChain::prove_next_block.
Sourcepub fn prove_block(
&self,
proposed_block: ProposedBlock,
) -> Result<ProvenBlock, Error>
pub fn prove_block( &self, proposed_block: ProposedBlock, ) -> Result<ProvenBlock, Error>
Proves proposed block alongside a corresponding list of batches.
Trait Implementations§
Source§impl Deserializable for MockChain
impl Deserializable for MockChain
Source§fn read_from<R>(source: &mut R) -> Result<MockChain, DeserializationError>where
R: ByteReader,
fn read_from<R>(source: &mut R) -> Result<MockChain, DeserializationError>where
R: ByteReader,
source, attempts to deserialize these bytes
into Self, and returns the result. Read moreSource§fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
Source§impl From<MockChain> for MockRpcApi
impl From<MockChain> for MockRpcApi
Source§impl Serializable for MockChain
impl Serializable for MockChain
Source§fn write_into<W>(&self, target: &mut W)where
W: ByteWriter,
fn write_into<W>(&self, target: &mut W)where
W: ByteWriter,
self into bytes and writes these bytes into the target.Source§fn get_size_hint(&self) -> usize
fn get_size_hint(&self) -> usize
Auto Trait Implementations§
impl Freeze for MockChain
impl RefUnwindSafe for MockChain
impl Send for MockChain
impl Sync for MockChain
impl Unpin for MockChain
impl UnsafeUnpin for MockChain
impl UnwindSafe for MockChain
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,
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::RequestSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§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 moreSource§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