Skip to main content

CliClient

Struct CliClient 

Source
pub struct CliClient(/* private fields */);
Expand description

A Client configured using the CLI’s system user configuration.

This is a wrapper around Client<CliKeyStore> that provides convenient initialization methods while maintaining full compatibility with the underlying Client API through Deref.

§Examples

use miden_client_cli::CliClient;
use miden_client_cli::transaction::TransactionRequestBuilder;

// Create a CLI-configured client
let mut client = CliClient::new().await?;

// All Client methods work automatically via Deref
client.sync_state().await?;

// Build and submit transactions
let req = TransactionRequestBuilder::new()
    // ... configure transaction
    .build()?;

// client.submit_new_transaction(req, target_account_id)?;

Implementations§

Source§

impl CliClient

Source

pub async fn from_config(config: CliConfig) -> Result<Self, CliError>

Creates a new CliClient instance from an existing CliConfig.

⚠️ WARNING: This method bypasses the standard CLI configuration discovery logic and should only be used in specific scenarios such as testing or when you have explicit control requirements.

§When NOT to use this method
  • DO NOT use this method if you want your application to behave like the CLI tool
  • DO NOT use this for general-purpose client initialization
  • DO NOT use this if you expect automatic local/global config resolution
§When to use this method
  • Testing: When you need to test with a specific configuration
  • Explicit Control: When you must load config from a non-standard location
  • Programmatic Config: When you’re constructing configuration programmatically

For standard client initialization that matches CLI behavior, use:

CliClient::new().await?

This method does not follow the CLI’s configuration priority logic (local → global). Instead, it uses exactly the configuration provided, which may not be what you expect.

§Arguments
  • config - The CLI configuration to use (bypasses standard config discovery)
§Returns

A configured CliClient instance.

§Errors

Returns a CliError if:

  • Keystore initialization fails
  • Client builder fails to construct the client
  • Note transport connection fails (if configured)
§Examples
use std::path::PathBuf;

use miden_client_cli::{CliClient, CliConfig};

// BEWARE: This bypasses standard config discovery!
// Only use if you know what you're doing.
let config = CliConfig::from_dir(&PathBuf::from("/path/to/.miden"))?;
let client = CliClient::from_config(config).await?;

// Prefer this for standard CLI-like behavior:
let client = CliClient::new().await?;
Source

pub async fn new() -> Result<Self, CliError>

Creates a new CliClient instance configured using the system user configuration.

This is the recommended way to create a CliClient instance.

This method implements the configuration logic used by the CLI tool, allowing external projects to create a Client instance with the same configuration. It searches for configuration files in the following order:

  1. Local .miden/miden-client.toml in the current working directory
  2. Global .miden/miden-client.toml in the home directory

If no configuration file is found, it silently initializes a default configuration.

The client is initialized with:

  • SQLite store from the configured path
  • gRPC client connection to the configured RPC endpoint
  • Filesystem-based keystore authenticator
  • Optional note transport client (if configured)
  • Transaction graceful blocks delta
  • Optional max block number delta
§Returns

A configured CliClient instance.

§Errors

Returns a CliError if:

  • No configuration file is found (local or global)
  • Configuration file parsing fails
  • Keystore initialization fails
  • Client builder fails to construct the client
  • Note transport connection fails (if configured)
§Examples
use miden_client_cli::CliClient;
use miden_client_cli::transaction::TransactionRequestBuilder;

// Create a client with default settings (debug disabled)
let mut client = CliClient::new().await?;

// Or with debug mode enabled
let mut client = CliClient::new().await?;

// Use it like a regular Client
client.sync_state().await?;

// Build and submit transactions
let req = TransactionRequestBuilder::new()
    // ... configure transaction
    .build()?;

// client.submit_new_transaction(req, target_account_id)?;
Source

pub fn into_inner(self) -> Client<CliKeyStore>

Unwraps the CliClient to get the inner Client<CliKeyStore>.

This consumes the CliClient and returns the underlying client.

§Examples
use miden_client_cli::CliClient;

let cli_client = CliClient::new().await?;
let inner_client = cli_client.into_inner();

Methods from Deref<Target = Client<CliKeyStore>>§

Source

pub async fn add_account( &mut self, account: &Account, overwrite: bool, ) -> Result<(), ClientError>

Adds the provided Account in the store so it can start being tracked by the client.

If the account is already being tracked and overwrite is set to true, the account will be overwritten. Newly created accounts must embed their seed (account.seed() must return Some(_)).

§Errors
  • If the account is new but it does not contain the seed.
  • If the account is already tracked and overwrite is set to false.
  • If overwrite is set to true and the account_data nonce is lower than the one already being tracked.
  • If overwrite is set to true and the account_data commitment doesn’t match the network’s account commitment.
Source

pub async fn import_account_by_id( &mut self, account_id: AccountId, ) -> Result<(), ClientError>

Imports an account from the network to the client’s store. The account needs to be public and be tracked by the network, it will be fetched by its ID. If the account was already being tracked by the client, its state will be overwritten.

To import an account as watched (state-tracking only, no note sync), use Self::import_watched_account_by_id instead. Switching an already-tracked account between Native and Watched is not supported.

§Errors
  • If the account is not found on the network.
  • If the account is private.
  • If the account is already tracked as watched.
  • There was an error sending the request to the network.
Source

pub async fn import_watched_account_by_id( &mut self, account_id: AccountId, ) -> Result<(), ClientError>

Starts watching an on-chain account (ClientAccountType::Watched).

Like Self::import_account_by_id, the account is fetched from the network by its ID. Unlike import_account_by_id, the account is added without registering its derived note tag: sync_state will keep the account’s commitment, nonce and storage up to date but will not pull notes targeted at it.

If the account is already being tracked as watched its state is overwritten. Switching an already-tracked native account to watched is not supported.

§Errors
  • If the account is not found on the network.
  • If the account is private.
  • If the account is already tracked as native.
  • There was an error sending the request to the network.
Source

pub async fn fetch_remote_token_metadata( &self, faucet_id: AccountId, ) -> Result<Option<FaucetMetadata>, ClientError>

Fetches a public faucet’s display metadata from the network.

Uses get_account with a minimal request so that the node does not return vault data. The faucet’s token config lives in a single value slot, which is always present in the returned storage header.

Returns:

  • Ok(Some(_)) — the account is public and its token config storage slot decoded.
  • Ok(None) — the account is private, not on chain, or the storage slot does not parse as a token config. Caller should fall back to a raw display.
  • Err(_) — transport-level RPC error.
Source

pub async fn add_address( &mut self, address: Address, account_id: AccountId, ) -> Result<(), ClientError>

Adds an Address to the associated AccountId, alongside its derived NoteTag. If the account is tracked as watched, the note tag is not registered.

§Errors
  • If the account is not found on the network.
  • If the address is already being tracked.
Source

pub async fn remove_address( &mut self, address: Address, account_id: AccountId, ) -> Result<bool, ClientError>

Removes an Address from the associated AccountId, alongside its derived NoteTag.

Returns true if the address was tracked. If it wasn’t, this is a no-op: the derived tag is left in place, since it may have been registered by something other than this address.

Source

pub async fn get_account_vault( &self, account_id: AccountId, ) -> Result<AssetVault, ClientError>

Retrieves the asset vault for a specific account.

To check the balance for a single asset, use Client::account_reader instead.

Source

pub async fn get_account_storage( &self, account_id: AccountId, ) -> Result<AccountStorage, ClientError>

Retrieves the whole account storage for a specific account.

To only load a specific slot, use Client::account_reader instead.

Source

pub async fn get_account_code( &self, account_id: AccountId, ) -> Result<Option<AccountCode>, ClientError>

Retrieves the account code for a specific account.

Returns None if the account is not found.

Source

pub async fn get_account_headers( &self, ) -> Result<Vec<(AccountHeader, AccountStatus)>, ClientError>

Returns a list of AccountHeader of all accounts stored in the database along with their statuses.

Said accounts’ state is the state after the last performed sync.

Source

pub async fn get_account_header( &self, account_id: AccountId, ) -> Result<Option<(AccountHeader, AccountStatus)>, ClientError>

Returns the AccountHeader of the account with the specified ID along with its status, or None if the account isn’t tracked by the client.

Said account’s state is the state after the last performed sync.

Source

pub async fn get_account( &self, account_id: AccountId, ) -> Result<Option<Account>, ClientError>

Retrieves the full Account object from the store, returning None if not found.

This method loads the complete account state including vault, storage, and code — including building the vault’s Merkle tree. For lazy access that fetches only the data you need (existence checks, single fields, storage items), use Client::account_reader instead.

Source

pub fn account_reader(&self, account_id: AccountId) -> AccountReader

Creates an AccountReader for lazy access to account data.

The AccountReader provides lazy access to account state - each method call fetches fresh data from storage, ensuring you always see the current state.

For loading the full Account object, use Client::get_account instead.

§Example
let reader = client.account_reader(account_id);

// Each call fetches fresh data
let nonce = reader.nonce().await?;
let balance = reader.get_balance(faucet_id).await?;

// Storage access is integrated
let value = reader.get_storage_item("my_slot").await?;
let (map_value, witness) = reader.get_storage_map_witness("balances", key).await?;
Source

pub async fn prune_account_history( &self, account_id: AccountId, up_to_nonce: Felt, ) -> Result<usize, ClientError>

Prunes historical account states for the specified account up to the given nonce.

Deletes all historical entries with replaced_at_nonce <= up_to_nonce and any orphaned account code.

Returns the total number of rows deleted, including historical entries and orphaned account code.

Source

pub async fn import_notes( &mut self, note_files: &[NoteFile], ) -> Result<Vec<NoteDetailsCommitment>, ClientError>

Imports a batch of new input notes into the client’s store. The information stored depends on the type of note files provided. If the notes existed previously, it will be updated with the new information. The tags specified by the NoteFiles will start being tracked. Returns the details commitments of notes that were successfully imported or updated. The details commitment is used (rather than the note ID) because notes imported without metadata — e.g. from NoteFile::ExpectedNote in an Expected state — have no note ID yet, whereas the details commitment is always available.

  • If the note files are NoteFile::NoteId, the notes are fetched from the node and stored in the client’s store. If the note is private or doesn’t exist, an error is returned.
  • If the note files are NoteFile::ExpectedNote, new notes are created with the provided details and tags.
  • If the note files are NoteFile::Committed, the notes are stored with the provided inclusion proof and metadata. The block header data is only fetched from the node if the note is committed in the past relative to the client.
§Errors
  • If an attempt is made to overwrite a note that is currently processing.

Note: This operation is atomic. If any note file is invalid or any existing note is in the processing state, the entire operation fails and no notes are imported.

Source

pub async fn get_input_notes( &self, filter: NoteFilter, ) -> Result<Vec<InputNoteRecord>, ClientError>

Retrieves the input notes managed by the client from the store.

§Errors

Returns a ClientError::StoreError if the filter is NoteFilter::Unique and there is no Note with the provided ID.

Source

pub async fn get_consumable_notes( &self, account_id: Option<AccountId>, ) -> Result<Vec<(InputNoteRecord, Vec<(AccountId, NoteConsumptionStatus)>)>, ClientError>

Returns the input notes and their consumability. Assuming the notes will be consumed by a normal consume transaction. If account_id is None then all consumable input notes are returned.

The note screener runs a series of checks to determine whether the note can be executed as part of a transaction for a specific account. If the specific account ID can consume it (ie, if it’s compatible with the account), it will be returned as part of the result list.

§Performance

This call screens every committed note tracked by the client on each invocation, without retaining verdicts between calls. When account_id is None the notes are screened against every account tracked by the client; when it is Some, only against that account. For notes whose consumability cannot be determined statically, the screener runs one trial transaction in the VM per (account, note) pair, so the cost grows with the number of screened accounts multiplied by the number of committed notes.

Consider cheaper alternatives when calling this function for accounts that accumulate committed-unconsumed notes, especially when used in polling loops:

Source

pub async fn get_note_consumability( &self, note: InputNoteRecord, ) -> Result<Vec<(AccountId, NoteConsumptionStatus)>, ClientError>

Returns the consumability conditions for the provided note.

The note screener runs a series of checks to determine whether the note can be executed as part of a transaction for a specific account. If the specific account ID can consume it (ie, if it’s compatible with the account), it will be returned as part of the result list.

Source

pub async fn get_input_note( &self, note_id: NoteId, ) -> Result<Option<InputNoteRecord>, ClientError>

Retrieves the input note given a NoteId. Returns None if the note is not found.

Source

pub async fn get_output_notes( &self, filter: NoteFilter, ) -> Result<Vec<OutputNoteRecord>, ClientError>

Returns output notes managed by this client.

Source

pub async fn get_output_note( &self, note_id: NoteId, ) -> Result<Option<OutputNoteRecord>, ClientError>

Retrieves the output note given a NoteId. Returns None if the note is not found.

Source

pub fn input_note_reader(&self, consumer: AccountId) -> InputNoteReader

Returns an InputNoteReader that lazily iterates over consumed input notes for the given consumer account.

The consumer is required because ordering is only guaranteed among notes consumed by the same account.

§Example
let mut reader = client.input_note_reader(account_id);

while let Some(note) = reader.next().await? {
    process(note);
}
Source

pub fn is_note_transport_enabled(&self) -> bool

Check if note transport connection is configured

Source

pub async fn send_private_note( &mut self, note: Note, address: &Address, ) -> Result<(), ClientError>

👎Deprecated since 0.15.2:

use Client::send_private_note_with_block_hint to relay a block hint for deterministic delivery

Send a note through the note transport network.

The note will be end-to-end encrypted (unimplemented, currently plaintext) using the provided recipient’s address details. The recipient will be able to retrieve this note through the note’s NoteTag.

Durability. The relay payload is persisted to the outbox before the transport call. If the call fails or is interrupted, the entry stays in the outbox and is retried on the next Client::flush_relay_outbox (which Client::sync_note_transport runs), so a transient transport failure does not drop the note. The receiver dedupes by note id, so a re-send after a partial success is harmless.

Prefer Client::send_private_note_with_block_hint, which also relays a block hint so the recipient gets deterministic delivery instead of relying on its lookback heuristic.

Source

pub async fn send_private_note_with_block_hint( &mut self, note: Note, address: &Address, block_hint: BlockNumber, ) -> Result<(), ClientError>

Send a note through the note transport network, relaying a block hint to the recipient.

block_hint is the block from which the recipient should start scanning for the note’s on-chain commitment, instead of relying on its lookback heuristic. Any block at or before the commitment is correct, and the chain tip at send time is a safe choice. A tighter value just means less for the recipient to scan.

The same durability guarantees as Client::send_private_note apply: the hint is persisted with the relay payload, so a retried send preserves it.

Source

pub async fn flush_relay_outbox(&self) -> Result<(), ClientError>

Re-attempt every relay payload in the durable outbox. Each entry is a private note whose previous transport delivery failed. Successful re-sends are dropped; failures are kept for the next call. Every entry is attempted independently, so one persistently-failing note does not block the others.

Client::sync_note_transport runs this automatically and ignores its error, so a relay failure can’t block a sync. Callers driving retries themselves can invoke it directly and inspect the returned error.

Source

pub const MAX_BACKFILL_TAGS_PER_SYNC: usize = 64

Source

pub async fn fetch_private_notes(&mut self) -> Result<(), ClientError>

Fetch notes for tracked note tags.

The client will query the configured note transport node for all tracked note tags. To list tracked tags please use Client::get_note_tags. To add a new note tag please use Client::add_note_tag. Only notes directed at your addresses will be stored and readable given the use of end-to-end encryption (unimplemented). Fetched notes will be stored into the client’s store.

An internal pagination mechanism is employed to reduce the number of downloaded notes: this fetches only notes past the stored cursor. Historical notes for a newly tracked tag are recovered automatically by Client::sync_note_transport, which backfills each new tag.

Source

pub async fn pswap_lineages( &self, ) -> Result<Vec<PswapLineageRecord>, ClientError>

Returns every PSWAP lineage tracked by this client.

Source

pub async fn pswap_lineages_for( &self, creator: AccountId, ) -> Result<Vec<PswapLineageRecord>, ClientError>

Returns lineages created by a specific local account.

Source

pub async fn pswap_active_lineages( &self, ) -> Result<Vec<PswapLineageRecord>, ClientError>

Returns the still-open PSWAP lineages — orders that are neither fully filled nor reclaimed (i.e. the creator’s live, reclaimable orders).

Source

pub async fn pswap_lineage( &self, order_id: Felt, ) -> Result<Option<PswapLineageRecord>, ClientError>

Returns the lineage for one order, or None if not tracked.

Source

pub async fn build_pswap_cancel_by_order( &self, order_id: Felt, ) -> Result<TransactionRequest, ClientError>

Builds a tx reclaiming the unfilled offered asset on the current tip of an Active lineage. See PswapLineageError for failure modes.

Source

pub async fn set_setting<T>( &self, key: String, value: T, ) -> Result<(), ClientError>
where T: Serializable,

Sets a setting value in the store. It can then be retrieved using get_setting.

Source

pub async fn get_setting<T>( &self, key: String, ) -> Result<Option<T>, ClientError>
where T: Deserializable,

Retrieves the value for key, or None if it hasn’t been set.

Source

pub async fn remove_setting(&self, key: String) -> Result<bool, ClientError>

Deletes the setting value from the store. Returns true if key had a value set.

Source

pub async fn list_setting_keys(&self) -> Result<Vec<String>, ClientError>

Returns all the setting keys from the store.

Source

pub async fn get_block_header_by_num( &self, block_num: BlockNumber, ) -> Result<Option<(BlockHeader, BlockRelevance)>, ClientError>

Retrieves a block header by its block number from the store.

Returns None if the block header is not found in the store.

Source

pub async fn get_latest_block_header(&self) -> Result<BlockHeader, ClientError>

Retrieves the block header at the current sync height from the store.

Source

pub async fn ensure_genesis_in_place(&mut self) -> Result<(), ClientError>

Ensures that the genesis block is available. If the genesis commitment is already cached in the RPC client, returns early. Otherwise, fetches the genesis block from the node, stores it, and sets the commitment in the RPC client.

Source

pub async fn get_current_partial_mmr(&self) -> Result<PartialMmr, ClientError>

Returns the cached PartialMmr if in-memory caching is enabled and its fingerprint matches the current store state, otherwise rebuilds from the store.

Source

pub async fn get_note_tags(&self) -> Result<Vec<NoteTagRecord>, ClientError>

Returns the list of note tags tracked by the client along with their source.

When syncing the state with the node, these tags will be added to the sync request and note-related information will be retrieved for notes that have matching tags. The source of the tag indicates its origin. It helps distinguish between:

  • Tags added manually by the user.
  • Tags automatically added by the client to track notes.
  • Tags added for accounts tracked by the client.

Note: Tags for accounts that are being tracked by the client are managed automatically by the client and don’t need to be added here. That is, notes for managed accounts will be retrieved automatically by the client when syncing.

Source

pub async fn add_note_tag(&mut self, tag: NoteTag) -> Result<bool, ClientError>

Adds a note tag for the client to track. This tag’s source will be marked as User.

Returns true if the tag was added, and false if it was already being tracked.

Source

pub async fn remove_note_tag( &mut self, tag: NoteTag, ) -> Result<bool, ClientError>

Removes a note tag for the client to track. Only tags added by the user can be removed.

Returns true if the tag was removed, and false if it was not being tracked.

Source

pub async fn get_sync_height(&self) -> Result<BlockNumber, ClientError>

Returns the block number of the last state sync block.

Source

pub async fn sync_chain(&mut self) -> Result<SyncSummary, ClientError>

Syncs the client’s on-chain state with the current state of the Miden network and returns a SyncSummary corresponding to the local state update.

Does not fetch private notes from the Note Transport Layer. Use Client::sync_state for the combined sync, or call Client::sync_note_transport separately.

Builds the default sync input, runs StateSync::sync_state (see that method for the detailed pipeline), applies the resulting update to the store, caches the partial MMR, and prunes irrelevant blocks according to the configured cadence.

Source

pub async fn sync_note_transport(&mut self) -> Result<Vec<NoteId>, ClientError>

Fetches private notes from the Note Transport Layer for the tracked note tags.

Returns the IDs of notes imported in this call. No-op (returns an empty vec) if note transport is disabled.

Source

pub async fn sync_state(&mut self) -> Result<SyncSummary, ClientError>

Runs the full client sync.

First fetches private notes from the Note Transport Layer (see Client::sync_note_transport), then syncs the client’s on-chain state with the Miden node (see Client::sync_chain). If note transport is disabled, this is equivalent to Client::sync_chain.

Fails fast on the first error. Private notes delivered via NTL are imported before the chain sync reads its input set, so their nullifiers are checked in the same call.

Source

pub async fn build_sync_input(&self) -> Result<StateSyncInput, ClientError>

Builds a default StateSyncInput from the current client state.

This includes all tracked account headers, all unique note tags, all unspent input and output notes, and all uncommitted transactions.

Source

pub async fn apply_state_sync( &mut self, update: StateSyncUpdate, ) -> Result<(), ClientError>

Applies the state sync update to the store and prunes irrelevant blocks according to the configured cadence.

See crate::Store::apply_state_sync() for what the update implies.

Source

pub async fn ensure_rpc_limits_in_place(&mut self) -> Result<(), ClientError>

Ensures that the RPC limits are set in the RPC client. If not already cached, fetches them from the node and persists them in the store.

Source

pub async fn get_transactions( &self, filter: TransactionFilter, ) -> Result<Vec<TransactionRecord>, ClientError>

Retrieves tracked transactions, filtered by TransactionFilter.

Source

pub fn new_transaction_batch(&mut self) -> BatchBuilder<'_, AUTH>

Open a new BatchBuilder for accumulating transactions across one or more local accounts.

See crate::transaction::batch for usage and constraints.

Source

pub async fn submit_new_transaction( &mut self, account_id: AccountId, transaction_request: TransactionRequest, ) -> Result<TransactionId, ClientError>

Executes a transaction specified by the request against the specified account, proves it, submits it to the network, and updates the local database.

Uses the client’s default prover (configured via crate::builder::ClientBuilder::prover).

Source

pub async fn submit_new_transaction_with_prover( &mut self, account_id: AccountId, transaction_request: TransactionRequest, tx_prover: Arc<dyn TransactionProver>, ) -> Result<TransactionId, ClientError>

Executes a transaction specified by the request against the specified account, proves it with the provided prover, submits it to the network, and updates the local database.

This is useful for falling back to a different prover (e.g., local) when the default prover (e.g., remote) fails with a ClientError::TransactionProvingError.

Source

pub async fn execute_transaction( &self, account_id: AccountId, transaction_request: TransactionRequest, ) -> Result<TransactionResult, ClientError>

Creates and executes a transaction specified by the request against the specified account, but doesn’t change the local database.

§Errors
Source

pub async fn execute_transaction_at( &mut self, account_id: AccountId, transaction_request: TransactionRequest, anchor: ChainAnchor, ) -> Result<TransactionResult, ClientError>

Creates and executes a transaction specified by the request against the specified account, using the provided ChainAnchor as the reference block instead of the current sync height. Like Self::execute_transaction, it doesn’t change the local database.

Since protocol 0.16 the signed transaction summary binds the reference block commitment, so signatures collected over a summary only authorize an execution whose reference block is the one the summary was built at. This method makes such an execution reproducible on any client, regardless of its sync height: the anchor supplies the reference block header and a consistent PartialBlockchain, typically captured by the transaction’s original proposer via Self::chain_anchor_for_request and shipped alongside the signed data.

The anchor pins the reference block only. The mode each input note is consumed in also enters the summary, so a request shared across clients should pin it through TransactionRequestBuilder::explicit_input_notes. Otherwise each client classifies the notes from its own store, and two clients can commit to different input notes.

Callers holding an anchor from an untrusted source should first compare ChainAnchor::block_commitment against an independently trusted value (e.g. the block commitment bound into the signed transaction summary).

Foreign accounts are fetched at the anchor’s block unless declared as ForeignAccount::Prefetched, so a node that no longer serves account state at that block only affects accounts that are not prefetched.

§Errors

In addition to the Self::execute_transaction errors:

Source

pub async fn chain_anchor_for_request( &self, transaction_request: &TransactionRequest, ) -> Result<ChainAnchor, ClientError>

Captures a ChainAnchor at the client’s current sync height, tracking the creation blocks of the request’s authenticated input notes so that the request can later execute against the anchor. This covers notes the store holds as authenticated and notes pinned as authenticated through TransactionRequestBuilder::explicit_input_notes.

This is the capture entry point for flows that never see a successful execution result at capture time — e.g. multisig proposal flows, where execution intentionally fails with TransactionExecutorError::Unauthorized to surface the transaction summary for signing. Capture the anchor first, execute the request with Self::execute_transaction_at, and ship the anchor alongside the summary; the same anchor then reproduces the summary during later verification and execution.

§Errors
Source

pub async fn prove_transaction( &self, tx_result: &TransactionResult, ) -> Result<ProvenTransaction, ClientError>

Proves the specified transaction using the prover configured for this client.

Source

pub async fn prove_transaction_with( &self, tx_result: &TransactionResult, tx_prover: Arc<dyn TransactionProver>, ) -> Result<ProvenTransaction, ClientError>

Proves the specified transaction using the provided prover.

§Errors
Source

pub async fn submit_proven_transaction( &mut self, proven_transaction: ProvenTransaction, transaction_inputs: impl Into<TransactionInputs>, ) -> Result<BlockNumber, ClientError>

Submits a previously proven transaction to the RPC endpoint and returns the node’s chain tip upon mempool admission.

§Errors

Returns ClientError::SubmissionOutcomeUnknown when the submission came back without a definite answer. It carries the proven transaction and the inputs it was submitted with, so a retry does not have to execute or prove again. Every other failure is a rejection the node issued deliberately.

Source

pub async fn get_transaction_store_update( &self, tx_result: &TransactionResult, submission_height: BlockNumber, ) -> Result<TransactionStoreUpdate, TransactionStoreUpdateError>

Builds a TransactionStoreUpdate for the provided transaction result at the specified submission height.

Source

pub async fn apply_transaction( &self, tx_result: &TransactionResult, submission_height: BlockNumber, ) -> Result<(), ClientError>

Persists the effects of a submitted transaction into the local store, updating account data, note metadata, and future note tracking.

Source

pub async fn apply_transaction_update( &self, tx_update: TransactionStoreUpdate, ) -> Result<(), ClientError>

Source

pub async fn execute_program( &self, account_id: AccountId, tx_script: TransactionScript, advice_inputs: AdviceInputs, foreign_accounts: BTreeMap<AccountId, ForeignAccount>, ) -> Result<[Felt; 16], ClientError>

Executes the provided transaction script against the specified account, and returns the resulting stack. Advice inputs and foreign accounts can be provided for the execution.

The transaction will use the current sync height as the block reference.

Source

pub async fn validate_request( &self, account_id: AccountId, transaction_request: &TransactionRequest, ) -> Result<(), ClientError>

Validates that the specified transaction request can be executed by the specified account.

This does’t guarantee that the transaction will succeed, but it’s useful to avoid submitting transactions that are guaranteed to fail. Some of the validations include:

  • That the account has enough balance to cover the outgoing assets.
  • That the client is not too far behind the chain tip.
Source

pub async fn ensure_ntx_scripts_registered( &mut self, account_id: AccountId, scripts: &[NoteScript], tx_prover: Arc<dyn TransactionProver>, ) -> Result<(), ClientError>

Checks whether the node’s note_scripts registry already has each of the expected NTX scripts. For any script that is missing, creates and submits a registration transaction that produces a public note carrying that script.

account_id is the account that will execute the registration transaction.

Standard note scripts are skipped — the NTX builder resolves those directly, so they never need registering. A missing non-standard script is registered, not an error.

This method is called automatically by Self::submit_new_transaction_with_prover when the TransactionRequest contains expected NTX scripts. It can also be called directly if you want to register scripts ahead of time.

Source

pub async fn get_foreign_account_inputs( &self, foreign_accounts: impl IntoIterator<Item = ForeignAccount>, block_num: BlockNumber, ) -> Result<Vec<AccountInputs>, ClientError>

Returns foreign account inputs for the required foreign accounts specified by the transaction request, with proofs anchored at block_num — the transaction’s reference block, so that the fetched state is consistent with the block the transaction executes against.

For any ForeignAccount::Public in foreign_accounts, these pieces of data are retrieved from the network. For any ForeignAccount::Private account, inner data is used and only a proof of the account’s existence on the network is fetched. A ForeignAccount::Prefetched account is returned as is.

Each witness opens against the account tree of block_num, so the results are valid only for a transaction whose reference block is exactly block_num. Declared as ForeignAccount::Prefetched, they are served from the request instead of being fetched. Under Self::execute_transaction_at the reference block is the anchor’s block; otherwise it is the sync height at execution time, so do not sync between fetching and executing. Only the given accounts are fetched; this method does not discover the accounts a transaction loads, such as faucets whose asset callbacks it triggers.

§Errors

Returns an error if account data cannot be fetched or converted to transaction inputs.

Source

pub fn code_builder(&self) -> CodeBuilder

Returns an instance of the CodeBuilder

Source

pub fn note_screener(&self) -> NoteScreener

Returns an instance of note::NoteScreener configured for this client.

Source

pub fn rng(&mut self) -> &mut ClientRng

Returns a reference to the client’s random number generator. This can be used to generate randomness for various purposes such as serial numbers, keys, etc.

Source

pub fn prover(&self) -> Arc<dyn TransactionProver + Send + Sync>

Source

pub fn authenticator(&self) -> Option<&Arc<AUTH>>

Source

pub fn source_manager(&self) -> Arc<dyn SourceManagerSync>

Returns the shared source manager used to retain MASM source information for assembled programs.

Source

pub fn store_identifier(&self) -> &str

Returns the identifier of the underlying store (e.g. IndexedDB database name, SQLite file path).

Source

pub fn with_transaction_observer( &mut self, observer: Arc<dyn TransactionObserver>, )

Registers a transaction::TransactionObserver. Per-observer failures are logged.

Source

pub async fn network_id(&self) -> Result<NetworkId, ClientError>

Returns the network ID of the node the client is connected to.

Trait Implementations§

Source§

impl Deref for CliClient

Allows using CliClient like Client<CliKeyStore> through deref coercion.

This enables calling all Client methods on CliClient directly.

Source§

type Target = Client<FilesystemKeyStore>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for CliClient

Allows mutable access to Client<CliKeyStore> methods.

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<D> OwoColorize for D

Source§

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

Set the foreground color generically Read more
Source§

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

Set the background color generically. Read more
Source§

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

Change the foreground color to black
Source§

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

Change the background color to black
Source§

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

Change the foreground color to red
Source§

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

Change the background color to red
Source§

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

Change the foreground color to green
Source§

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

Change the background color to green
Source§

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

Change the foreground color to yellow
Source§

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

Change the background color to yellow
Source§

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

Change the foreground color to blue
Source§

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

Change the background color to blue
Source§

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

Change the foreground color to magenta
Source§

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

Change the background color to magenta
Source§

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

Change the foreground color to purple
Source§

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

Change the background color to purple
Source§

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

Change the foreground color to cyan
Source§

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

Change the background color to cyan
Source§

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

Change the foreground color to white
Source§

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

Change the background color to white
Source§

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

Change the foreground color to the terminal default
Source§

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

Change the background color to the terminal default
Source§

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

Change the foreground color to bright black
Source§

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

Change the background color to bright black
Source§

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

Change the foreground color to bright red
Source§

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

Change the background color to bright red
Source§

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

Change the foreground color to bright green
Source§

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

Change the background color to bright green
Source§

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

Change the foreground color to bright yellow
Source§

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

Change the background color to bright yellow
Source§

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

Change the foreground color to bright blue
Source§

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

Change the background color to bright blue
Source§

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

Change the foreground color to bright magenta
Source§

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

Change the background color to bright magenta
Source§

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

Change the foreground color to bright purple
Source§

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

Change the background color to bright purple
Source§

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

Change the foreground color to bright cyan
Source§

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

Change the background color to bright cyan
Source§

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

Change the foreground color to bright white
Source§

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

Change the background color to bright white
Source§

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

Make the text bold
Source§

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

Make the text dim
Source§

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

Make the text italicized
Source§

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

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

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

Swap the foreground and background colors
Source§

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

Hide the text
Source§

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

Cross out the text
Source§

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

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

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

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

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

Sets the foreground color to an RGB value.
Source§

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

Sets the background color to an RGB value.
Source§

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

Apply a runtime-determined style
Source§

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

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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

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

Source§

fn vzip(self) -> V

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