Cast

Struct Cast 

Source
pub struct Cast<P> {
    pub(crate) provider: P,
}

Fields§

§provider: P

Implementations§

Source§

impl<P: Provider<AnyNetwork> + Clone + Unpin> Cast<P>

Source

pub fn new(provider: P) -> Self

Creates a new Cast instance from the provided client

§Example
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
Source

pub async fn call( &self, req: &WithOtherFields<TransactionRequest>, func: Option<&Function>, block: Option<BlockId>, state_override: Option<StateOverride>, block_override: Option<BlockOverrides>, ) -> Result<String>

Makes a read-only call to the specified address

§Example
use alloy_primitives::{Address, U256, Bytes};
use alloy_rpc_types::{TransactionRequest, BlockOverrides, state::{StateOverride, AccountOverride}};
use alloy_serde::WithOtherFields;
use cast::Cast;
use alloy_provider::{RootProvider, ProviderBuilder, network::AnyNetwork};
use std::{str::FromStr, collections::HashMap};
use alloy_rpc_types::state::StateOverridesBuilder;
use alloy_sol_types::{sol, SolCall};

sol!(
    function greeting(uint256 i) public returns (string);
);

let alloy_provider = ProviderBuilder::<_,_, AnyNetwork>::default().connect("http://localhost:8545").await?;;
let to = Address::from_str("0xB3C95ff08316fb2F2e3E52Ee82F8e7b605Aa1304")?;
let greeting = greetingCall { i: U256::from(5) }.abi_encode();
let bytes = Bytes::from_iter(greeting.iter());
let tx = TransactionRequest::default().to(to).input(bytes.into());
let tx = WithOtherFields::new(tx);

// Create state overrides
let mut state_override = StateOverride::default();
let mut account_override = AccountOverride::default();
account_override.balance = Some(U256::from(1000));
state_override.insert(to, account_override);
let state_override_object = StateOverridesBuilder::default().build();
let block_override_object = BlockOverrides::default();

let cast = Cast::new(alloy_provider);
let data = cast.call(&tx, None, None, Some(state_override_object), Some(block_override_object)).await?;
println!("{}", data);
Source

pub async fn access_list( &self, req: &WithOtherFields<TransactionRequest>, block: Option<BlockId>, ) -> Result<String>

Generates an access list for the specified transaction

§Example
use cast::{Cast};
use alloy_primitives::{Address, U256, Bytes};
use alloy_rpc_types::{TransactionRequest};
use alloy_serde::WithOtherFields;
use alloy_provider::{RootProvider, ProviderBuilder, network::AnyNetwork};
use std::str::FromStr;
use alloy_sol_types::{sol, SolCall};

sol!(
    function greeting(uint256 i) public returns (string);
);

let provider = ProviderBuilder::<_,_, AnyNetwork>::default().connect("http://localhost:8545").await?;;
let to = Address::from_str("0xB3C95ff08316fb2F2e3E52Ee82F8e7b605Aa1304")?;
let greeting = greetingCall { i: U256::from(5) }.abi_encode();
let bytes = Bytes::from_iter(greeting.iter());
let tx = TransactionRequest::default().to(to).input(bytes.into());
let tx = WithOtherFields::new(tx);
let cast = Cast::new(&provider);
let access_list = cast.access_list(&tx, None).await?;
println!("{}", access_list);
Source

pub async fn balance( &self, who: Address, block: Option<BlockId>, ) -> Result<U256>

Source

pub async fn send( &self, tx: WithOtherFields<TransactionRequest>, ) -> Result<PendingTransactionBuilder<AnyNetwork>>

Sends a transaction to the specified address

§Example
use cast::{Cast};
use alloy_primitives::{Address, U256, Bytes};
use alloy_serde::WithOtherFields;
use alloy_rpc_types::{TransactionRequest};
use alloy_provider::{RootProvider, ProviderBuilder, network::AnyNetwork};
use std::str::FromStr;
use alloy_sol_types::{sol, SolCall};

sol!(
    function greet(string greeting) public;
);

let provider = ProviderBuilder::<_,_, AnyNetwork>::default().connect("http://localhost:8545").await?;;
let from = Address::from_str("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")?;
let to = Address::from_str("0xB3C95ff08316fb2F2e3E52Ee82F8e7b605Aa1304")?;
let greeting = greetCall { greeting: "hello".to_string() }.abi_encode();
let bytes = Bytes::from_iter(greeting.iter());
let gas = U256::from_str("200000").unwrap();
let value = U256::from_str("1").unwrap();
let nonce = U256::from_str("1").unwrap();
let tx = TransactionRequest::default().to(to).input(bytes.into()).from(from);
let tx = WithOtherFields::new(tx);
let cast = Cast::new(provider);
let data = cast.send(tx).await?;
println!("{:#?}", data);
Source

pub async fn publish( &self, raw_tx: String, ) -> Result<PendingTransactionBuilder<AnyNetwork>>

Publishes a raw transaction to the network

§Example
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let res = cast.publish("0x1234".to_string()).await?;
println!("{:?}", res);
Source

pub async fn send_sync( &self, tx: WithOtherFields<TransactionRequest>, ) -> Result<String>

Sends a transaction and waits for receipt synchronously

Source

pub(crate) fn format_receipt( &self, receipt: TransactionReceiptWithRevertReason, field: Option<String>, ) -> Result<String>

Helper method to format transaction receipts consistently

Source

pub async fn block<B: Into<BlockId>>( &self, block: B, full: bool, fields: Vec<String>, raw: bool, ) -> Result<String>

§Example
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let block = cast.block(5, true, vec![], false).await?;
println!("{}", block);
Source

pub(crate) async fn block_field_as_num<B: Into<BlockId>>( &self, block: B, field: String, ) -> Result<U256>

Source

pub async fn base_fee<B: Into<BlockId>>(&self, block: B) -> Result<U256>

Source

pub async fn age<B: Into<BlockId>>(&self, block: B) -> Result<String>

Source

pub async fn timestamp<B: Into<BlockId>>(&self, block: B) -> Result<U256>

Source

pub async fn chain(&self) -> Result<&str>

Source

pub async fn chain_id(&self) -> Result<u64>

Source

pub async fn block_number(&self) -> Result<u64>

Source

pub async fn gas_price(&self) -> Result<u128>

Source

pub async fn nonce(&self, who: Address, block: Option<BlockId>) -> Result<u64>

§Example
use alloy_primitives::Address;
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x7eD52863829AB99354F3a0503A622e82AcD5F7d3")?;
let nonce = cast.nonce(addr, None).await?;
println!("{}", nonce);
Source

pub async fn codehash( &self, who: Address, slots: Vec<B256>, block: Option<BlockId>, ) -> Result<String>

#Example

use alloy_primitives::{Address, FixedBytes};
use alloy_provider::{network::AnyNetwork, ProviderBuilder, RootProvider};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x7eD52863829AB99354F3a0503A622e82AcD5F7d3")?;
let slots = vec![FixedBytes::from_str("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421")?];
let codehash = cast.codehash(addr, slots, None).await?;
println!("{}", codehash);
Source

pub async fn storage_root( &self, who: Address, slots: Vec<B256>, block: Option<BlockId>, ) -> Result<String>

#Example

use alloy_primitives::{Address, FixedBytes};
use alloy_provider::{network::AnyNetwork, ProviderBuilder, RootProvider};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x7eD52863829AB99354F3a0503A622e82AcD5F7d3")?;
let slots = vec![FixedBytes::from_str("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421")?];
let storage_root = cast.storage_root(addr, slots, None).await?;
println!("{}", storage_root);
Source

pub async fn implementation( &self, who: Address, is_beacon: bool, block: Option<BlockId>, ) -> Result<String>

§Example
use alloy_primitives::Address;
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x7eD52863829AB99354F3a0503A622e82AcD5F7d3")?;
let implementation = cast.implementation(addr, false, None).await?;
println!("{}", implementation);
Source

pub async fn admin( &self, who: Address, block: Option<BlockId>, ) -> Result<String>

§Example
use alloy_primitives::Address;
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x7eD52863829AB99354F3a0503A622e82AcD5F7d3")?;
let admin = cast.admin(addr, None).await?;
println!("{}", admin);
Source

pub async fn compute_address( &self, address: Address, nonce: Option<u64>, ) -> Result<Address>

§Example
use alloy_primitives::{Address, U256};
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("7eD52863829AB99354F3a0503A622e82AcD5F7d3")?;
let computed_address = cast.compute_address(addr, None).await?;
println!("Computed address for address {addr}: {computed_address}");
Source

pub async fn code( &self, who: Address, block: Option<BlockId>, disassemble: bool, ) -> Result<String>

§Example
use alloy_primitives::Address;
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x00000000219ab540356cbb839cbe05303d7705fa")?;
let code = cast.code(addr, None, false).await?;
println!("{}", code);
Source

pub async fn codesize( &self, who: Address, block: Option<BlockId>, ) -> Result<String>

Example

use alloy_primitives::Address;
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x00000000219ab540356cbb839cbe05303d7705fa")?;
let codesize = cast.codesize(addr, None).await?;
println!("{}", codesize);
Source

pub async fn transaction( &self, tx_hash: Option<String>, from: Option<NameOrAddress>, nonce: Option<u64>, field: Option<String>, raw: bool, to_request: bool, ) -> Result<String>

§Example
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let tx_hash = "0xf8d1713ea15a81482958fb7ddf884baee8d3bcc478c5f2f604e008dc788ee4fc";
let tx = cast.transaction(Some(tx_hash.to_string()), None, None, None, false, false).await?;
println!("{}", tx);
Source

pub async fn receipt( &self, tx_hash: String, field: Option<String>, confs: u64, timeout: Option<u64>, cast_async: bool, ) -> Result<String>

§Example
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let tx_hash = "0xf8d1713ea15a81482958fb7ddf884baee8d3bcc478c5f2f604e008dc788ee4fc";
let receipt = cast.receipt(tx_hash.to_string(), None, 1, None, false).await?;
println!("{}", receipt);
Source

pub async fn rpc<V>(&self, method: &str, params: V) -> Result<String>
where V: RpcSend,

Perform a raw JSON-RPC request

§Example
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let result = cast
    .rpc("eth_getBalance", &["0xc94770007dda54cF92009BFF0dE90c06F603a09f", "latest"])
    .await?;
println!("{}", result);
Source

pub async fn storage( &self, from: Address, slot: B256, block: Option<BlockId>, ) -> Result<String>

Returns the slot

§Example
use alloy_primitives::{Address, B256};
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use cast::Cast;
use std::str::FromStr;

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);
let addr = Address::from_str("0x00000000006c3852cbEf3e08E8dF289169EdE581")?;
let slot = B256::ZERO;
let storage = cast.storage(addr, slot, None).await?;
println!("{}", storage);
Source

pub async fn filter_logs(&self, filter: Filter) -> Result<String>

Source

pub async fn filter_logs_chunked( &self, filter: Filter, chunk_size: u64, ) -> Result<String>

Retrieves logs using chunked requests to handle large block ranges.

Automatically divides large block ranges into smaller chunks to avoid provider limits and processes them with controlled concurrency to prevent rate limiting.

Source

pub(crate) fn format_logs(logs: Vec<Log>) -> Result<String>

Source

pub(crate) fn extract_block_range(filter: &Filter) -> (Option<u64>, Option<u64>)

Source

pub(crate) async fn get_logs_chunked( &self, filter: &Filter, chunk_size: u64, ) -> Result<Vec<Log>>
where P: Clone + Unpin,

Retrieves logs with automatic chunking fallback.

First tries to fetch logs for the entire range. If that fails, falls back to concurrent chunked requests with rate limiting.

Source

pub(crate) async fn get_logs_chunked_concurrent( &self, filter: &Filter, chunk_size: u64, ) -> Result<Vec<Log>>
where P: Clone + Unpin,

Retrieves logs using concurrent chunked requests with rate limiting.

Divides the block range into chunks and processes them with a maximum of 5 concurrent requests. Falls back to single-block queries if chunks fail.

Source

pub async fn convert_block_number( &self, block: Option<BlockId>, ) -> Result<Option<BlockNumberOrTag>, Error>

Converts a block identifier into a block number.

If the block identifier is a block number, then this function returns the block number. If the block identifier is a block hash, then this function returns the block number of that block hash. If the block identifier is None, then this function returns None.

§Example
use alloy_primitives::fixed_bytes;
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use alloy_rpc_types::{BlockId, BlockNumberOrTag};
use cast::Cast;
use std::{convert::TryFrom, str::FromStr};

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?;
let cast = Cast::new(provider);

let block_number = cast.convert_block_number(Some(BlockId::number(5))).await?;
assert_eq!(block_number, Some(BlockNumberOrTag::Number(5)));

let block_number = cast
    .convert_block_number(Some(BlockId::hash(fixed_bytes!(
        "0000000000000000000000000000000000000000000000000000000000001234"
    ))))
    .await?;
assert_eq!(block_number, Some(BlockNumberOrTag::Number(4660)));

let block_number = cast.convert_block_number(None).await?;
assert_eq!(block_number, None);
Source

pub async fn subscribe( &self, filter: Filter, output: &mut dyn Write, ) -> Result<()>

Sets up a subscription to the given filter and writes the logs to the given output.

§Example
use alloy_primitives::Address;
use alloy_provider::{ProviderBuilder, RootProvider, network::AnyNetwork};
use alloy_rpc_types::Filter;
use alloy_transport::BoxTransport;
use cast::Cast;
use std::{io, str::FromStr};

let provider =
    ProviderBuilder::<_, _, AnyNetwork>::default().connect("wss://localhost:8545").await?;
let cast = Cast::new(provider);

let filter =
    Filter::new().address(Address::from_str("0x00000000006c3852cbEf3e08E8dF289169EdE581")?);
let mut output = io::stdout();
cast.subscribe(filter, &mut output).await?;

Auto Trait Implementations§

§

impl<P> Freeze for Cast<P>
where P: Freeze,

§

impl<P> RefUnwindSafe for Cast<P>
where P: RefUnwindSafe,

§

impl<P> Send for Cast<P>
where P: Send,

§

impl<P> Sync for Cast<P>
where P: Sync,

§

impl<P> Unpin for Cast<P>
where P: Unpin,

§

impl<P> UnwindSafe for Cast<P>
where P: UnwindSafe,

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
§

impl<T, R> CollectAndApply<T, R> for T

§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

§

type Output = R

§

impl<T> Conv for T

§

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

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

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<TxEnv, T> FromRecoveredTx<&T> for TxEnv
where TxEnv: FromRecoveredTx<T>,

§

fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv

Builds a TxEnv from a transaction and a sender address.
§

impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnv
where TxEnv: FromTxWithEncoded<T>,

§

fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv

Builds a TxEnv from a transaction, its sender, and encoded transaction bytes.
§

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

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

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

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
§

impl<L> LayerExt<L> for L

§

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

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> Paint for T
where T: ?Sized,

§

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();
§

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

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

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

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

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

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

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));
§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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();
§

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

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

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

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

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

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

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));
§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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();
§

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

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

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

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

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

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

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

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

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

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());
§

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

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

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

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

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

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

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

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

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

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();
§

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

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

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

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

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

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

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

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

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

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());
§

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

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

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

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

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

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

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

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

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

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);
§

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

Create a new [Painted] with a default [Style]. Read more
§

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
§

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
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
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.
§

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
§

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

Layout§

Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.