Skip to main content

TIP20Token

Struct TIP20Token 

Source
pub struct TIP20Token {
Show 21 fields pub roles: <Mapping<Address, Mapping<B256, bool>> as StorableType>::Handler, pub role_admins: <Mapping<B256, B256> as StorableType>::Handler, pub name: <String as StorableType>::Handler, pub symbol: <String as StorableType>::Handler, pub currency: <String as StorableType>::Handler, pub _domain_separator: <B256 as StorableType>::Handler, pub quote_token: <Address as StorableType>::Handler, pub next_quote_token: <Address as StorableType>::Handler, pub transfer_policy_id: <u64 as StorableType>::Handler, pub total_supply: <U256 as StorableType>::Handler, pub balances: <Mapping<Address, U256> as StorableType>::Handler, pub allowances: <Mapping<Address, Mapping<Address, U256>> as StorableType>::Handler, pub permit_nonces: <Mapping<Address, U256> as StorableType>::Handler, pub paused: <bool as StorableType>::Handler, pub supply_cap: <U256 as StorableType>::Handler, pub _salts: <Mapping<B256, bool> as StorableType>::Handler, pub global_reward_per_token: <U256 as StorableType>::Handler, pub opted_in_supply: <u128 as StorableType>::Handler, pub user_reward_info: <Mapping<Address, UserRewardInfo> as StorableType>::Handler, address: Address, storage: StorageCtx,
}

Fields§

§roles: <Mapping<Address, Mapping<B256, bool>> as StorableType>::Handler§role_admins: <Mapping<B256, B256> as StorableType>::Handler§name: <String as StorableType>::Handler§symbol: <String as StorableType>::Handler§currency: <String as StorableType>::Handler§_domain_separator: <B256 as StorableType>::Handler§quote_token: <Address as StorableType>::Handler§next_quote_token: <Address as StorableType>::Handler§transfer_policy_id: <u64 as StorableType>::Handler§total_supply: <U256 as StorableType>::Handler§balances: <Mapping<Address, U256> as StorableType>::Handler§allowances: <Mapping<Address, Mapping<Address, U256>> as StorableType>::Handler§permit_nonces: <Mapping<Address, U256> as StorableType>::Handler§paused: <bool as StorableType>::Handler§supply_cap: <U256 as StorableType>::Handler§_salts: <Mapping<B256, bool> as StorableType>::Handler§global_reward_per_token: <U256 as StorableType>::Handler§opted_in_supply: <u128 as StorableType>::Handler§user_reward_info: <Mapping<Address, UserRewardInfo> as StorableType>::Handler§address: Address§storage: StorageCtx

Implementations§

Source§

impl TIP20Token

Source

pub fn distribute_reward( &mut self, msg_sender: Address, call: distributeRewardCall, ) -> Result<()>

Distributes amount of reward tokens from the caller into the opted-in reward pool. Transfers tokens to the contract and increases the global reward-per-token accumulator proportionally to the opted-in supply.

§Errors
  • Paused — token transfers are currently paused
  • InvalidAmountamount is zero
  • PolicyForbids — TIP-403 policy rejects the transfer
  • SpendingLimitExceeded — access key spending limit exceeded
  • InsufficientBalance — caller balance lower than amount
  • NoOptedInSupply — no tokens are currently opted into rewards
Source

pub fn update_rewards(&mut self, holder: Address) -> Result<Address>

Updates and accumulates accrued rewards for a specific token holder.

This function calculates the rewards earned by a holder based on their balance and the reward per token difference since their last update. Rewards are accumulated in the delegated recipient’s rewardBalance. Returns the holder’s delegated recipient address.

Source

pub fn set_reward_recipient( &mut self, msg_sender: Address, call: setRewardRecipientCall, ) -> Result<()>

Sets or changes the reward recipient for a token holder.

This function allows a token holder to designate who should receive their share of rewards. Setting to zero address opts out of rewards.

§Errors
  • Paused — token transfers are currently paused
  • PolicyForbids — TIP-403 policy rejects the sender→recipient transfer authorization
Source

pub fn claim_rewards(&mut self, msg_sender: Address) -> Result<U256>

Claims accumulated rewards for a recipient.

This function allows a reward recipient to claim their accumulated rewards and receive them as token transfers to their own balance.

§Errors
  • Paused — token transfers are currently paused
  • PolicyForbids — TIP-403 policy rejects the contract→caller transfer authorization
Source

pub fn get_global_reward_per_token(&self) -> Result<U256>

Gets the accumulated global reward per token.

Source

fn set_global_reward_per_token(&mut self, value: U256) -> Result<()>

Sets the accumulated global reward per token in storage.

Source

pub fn get_opted_in_supply(&self) -> Result<u128>

Gets the total supply of tokens opted into rewards from storage.

Source

pub fn set_opted_in_supply(&mut self, value: u128) -> Result<()>

Sets the total supply of tokens opted into rewards.

Source

pub fn handle_rewards_on_transfer( &mut self, from: Address, to: Address, amount: U256, ) -> Result<()>

Handles reward accounting for both sender and receiver during token transfers.

Source

pub fn handle_rewards_on_mint( &mut self, to: Address, amount: U256, ) -> Result<()>

Handles reward accounting when tokens are minted to an address.

Source

pub fn get_user_reward_info(&self, account: Address) -> Result<UserRewardInfo>

Retrieves user reward information for a given account.

Source

pub fn get_pending_rewards(&self, account: Address) -> Result<u128>

Calculates the pending claimable rewards for an account without modifying state.

This function returns the total pending claimable reward amount, which includes:

  1. The stored reward balance from previous updates
  2. Newly accrued rewards based on the current global reward per token

For accounts that have delegated their rewards to another recipient, this returns 0 since their rewards accrue to their delegate instead.

Source§

impl TIP20Token

Source

pub fn initialize_roles(&mut self) -> Result<()>

Initializes the roles precompile by setting UNGRANTABLE_ROLE to be self-administered.

Source

pub fn grant_default_admin( &mut self, msg_sender: Address, admin: Address, ) -> Result<()>

Grants DEFAULT_ADMIN_ROLE to admin. Used during token initialization.

Source

pub fn has_role(&self, call: hasRoleCall) -> Result<bool>

Returns whether account holds the given role.

Source

pub fn get_role_admin(&self, call: getRoleAdminCall) -> Result<B256>

Returns the admin role that governs role.

Source

pub fn grant_role( &mut self, msg_sender: Address, call: grantRoleCall, ) -> Result<()>

Grants role to account.

§Errors
  • Unauthorized — caller does not hold the admin role for role
Source

pub fn revoke_role( &mut self, msg_sender: Address, call: revokeRoleCall, ) -> Result<()>

Revokes role from account.

§Errors
  • Unauthorized — caller does not hold the admin role for role
Source

pub fn renounce_role( &mut self, msg_sender: Address, call: renounceRoleCall, ) -> Result<()>

Allows the caller to voluntarily give up their own role.

§Errors
  • Unauthorized — caller does not hold role
Source

pub fn set_role_admin( &mut self, msg_sender: Address, call: setRoleAdminCall, ) -> Result<()>

Changes the admin role that governs role.

§Errors
  • Unauthorized — caller does not hold the current admin role for role
Source

pub fn check_role(&self, account: Address, role: B256) -> Result<()>

Reverts if account does not hold role.

§Errors
  • Unauthorized — account does not hold role
Source

pub fn has_role_internal(&self, account: Address, role: B256) -> Result<bool>

Low-level role check without calldata decoding.

Source

pub fn grant_role_internal( &mut self, account: Address, role: B256, ) -> Result<()>

Low-level role grant without authorization checks or events.

Source

fn revoke_role_internal(&mut self, account: Address, role: B256) -> Result<()>

Source

fn get_role_admin_internal(&self, role: B256) -> Result<B256>

If sloads 0, will be equal to DEFAULT_ADMIN_ROLE

Source

fn set_role_admin_internal( &mut self, role: B256, admin_role: B256, ) -> Result<()>

Source

fn check_role_internal(&self, account: Address, role: B256) -> Result<()>

Source§

impl TIP20Token

Source

fn __new(address: Address) -> Self

Source

fn __initialize(&mut self) -> Result<()>

Source

fn emit_event(&mut self, event: impl IntoLogData) -> Result<()>

Source

pub fn emitted_events(&self) -> &Vec<LogData>

Available on crate features test-utils only.
Source

pub fn clear_emitted_events(&mut self)

Available on crate features test-utils only.
Source

pub fn assert_emitted_events(&self, expected: Vec<impl IntoLogData>)

Available on crate features test-utils only.
Source§

impl TIP20Token

Source

pub fn name(&self) -> Result<String>

Returns the token name.

Source

pub fn symbol(&self) -> Result<String>

Returns the token symbol.

Source

pub fn decimals(&self) -> Result<u8>

Returns the token decimals (always 6 for TIP-20).

Source

pub fn currency(&self) -> Result<String>

Returns the token’s currency denomination (e.g. "USD").

Source

pub fn total_supply(&self) -> Result<U256>

Returns the current total supply.

Source

pub fn quote_token(&self) -> Result<Address>

Returns the active quote token address used for pricing.

Source

pub fn next_quote_token(&self) -> Result<Address>

Returns the pending next quote token address (set but not yet finalized).

Source

pub fn supply_cap(&self) -> Result<U256>

Returns the maximum mintable supply.

Source

pub fn paused(&self) -> Result<bool>

Returns whether the token is currently paused.

Source

pub fn transfer_policy_id(&self) -> Result<u64>

Returns the TIP-403 transfer policy ID governing this token’s transfers.

Source

pub fn pause_role() -> B256

Returns the PAUSE_ROLE constant

This role identifier grants permission to pause the token contract. The role is computed as keccak256("PAUSE_ROLE").

Source

pub fn unpause_role() -> B256

Returns the UNPAUSE_ROLE constant

This role identifier grants permission to unpause the token contract. The role is computed as keccak256("UNPAUSE_ROLE").

Source

pub fn issuer_role() -> B256

Returns the ISSUER_ROLE constant

This role identifier grants permission to mint and burn tokens. The role is computed as keccak256("ISSUER_ROLE").

Source

pub fn burn_blocked_role() -> B256

Returns the BURN_BLOCKED_ROLE constant

This role identifier grants permission to burn tokens from blocked accounts. The role is computed as keccak256("BURN_BLOCKED_ROLE").

Source

pub fn balance_of(&self, call: balanceOfCall) -> Result<U256>

Returns the token balance of account.

Source

pub fn allowance(&self, call: allowanceCall) -> Result<U256>

Returns the remaining allowance that spender can transfer on behalf of owner.

Source

pub fn change_transfer_policy_id( &mut self, msg_sender: Address, call: changeTransferPolicyIdCall, ) -> Result<()>

Updates the TIP403Registry transfer policy governing this token’s transfers.

§Errors
  • Unauthorized — caller does not hold DEFAULT_ADMIN_ROLE
  • InvalidTransferPolicyId — policy does not exist in the TIP403Registry
Source

pub fn set_supply_cap( &mut self, msg_sender: Address, call: setSupplyCapCall, ) -> Result<()>

Sets a new supply cap. Must be ≥ current total supply and ≤ U128_MAX.

§Errors
  • Unauthorized — caller does not hold DEFAULT_ADMIN_ROLE
  • InvalidSupplyCap — new cap is below current total supply
  • SupplyCapExceeded — new cap exceeds U128_MAX
Source

pub fn pause(&mut self, msg_sender: Address, _call: pauseCall) -> Result<()>

Pauses all token transfers.

§Errors
  • Unauthorized — caller does not hold PAUSE_ROLE
Source

pub fn unpause(&mut self, msg_sender: Address, _call: unpauseCall) -> Result<()>

Unpauses token transfers.

§Errors
  • Unauthorized — caller does not hold UNPAUSE_ROLE
Source

pub fn set_next_quote_token( &mut self, msg_sender: Address, call: setNextQuoteTokenCall, ) -> Result<()>

Stages a new quote token. Must be finalized via Self::complete_quote_token_update. Validates that the candidate is a deployed TIP-20 token (via TIP20Factory) and, for USD-denominated tokens, that the candidate is also USD-denominated.

§Errors
  • Unauthorized — caller does not hold DEFAULT_ADMIN_ROLE
  • InvalidQuoteToken — token is pathUSD, candidate is not a deployed TIP-20, or USD currency mismatch
Source

pub fn complete_quote_token_update( &mut self, msg_sender: Address, _call: completeQuoteTokenUpdateCall, ) -> Result<()>

Finalizes the staged quote token update. Walks the quote-token chain to detect cycles before committing the change.

§Errors
  • Unauthorized — caller does not hold DEFAULT_ADMIN_ROLE
  • InvalidQuoteToken — update would create a cycle in the quote-token graph
Source

pub fn mint(&mut self, msg_sender: Address, call: mintCall) -> Result<()>

Mints amount tokens to the specified to address. Enforces mint-recipient compliance via TIP403Registry and validates against supply cap.

§Errors
  • PolicyForbids — TIP-403 policy rejects the mint recipient
  • Unauthorized — caller does not hold the ISSUER_ROLE role
  • SupplyCapExceeded — minting would push total supply above the cap
Source

pub fn mint_with_memo( &mut self, msg_sender: Address, call: mintWithMemoCall, ) -> Result<()>

Like Self::mint, but attaches a 32-byte memo.

Source

fn _mint( &mut self, msg_sender: Address, to: Address, amount: U256, ) -> Result<()>

Internal helper to mint new tokens and update balances

Source

pub fn burn(&mut self, msg_sender: Address, call: burnCall) -> Result<()>

Burns amount from the caller’s balance and reduces total supply.

§Errors
  • Unauthorized — caller does not hold the ISSUER_ROLE role
  • InsufficientBalance — caller balance lower than burn amount
Source

pub fn burn_with_memo( &mut self, msg_sender: Address, call: burnWithMemoCall, ) -> Result<()>

Like Self::burn, but attaches a 32-byte memo.

Source

pub fn burn_blocked( &mut self, msg_sender: Address, call: burnBlockedCall, ) -> Result<()>

Burns tokens from addresses blocked by TIP403Registry policy.

§Errors
  • Unauthorized — caller does not hold BURN_BLOCKED_ROLE
  • PolicyForbids — target address is not blocked by policy
  • ProtectedAddress — cannot burn from fee manager or stablecoin DEX addresses
Source

fn _burn(&mut self, msg_sender: Address, amount: U256) -> Result<()>

Source

pub fn approve( &mut self, msg_sender: Address, call: approveCall, ) -> Result<bool>

Sets spender’s allowance to amount for the caller’s tokens. Deducts from the caller’s AccountKeychain spending limit when the new allowance exceeds the previous one.

§Errors
  • SpendingLimitExceeded — new allowance exceeds access key spending limit
Source

pub fn nonces(&self, call: noncesCall) -> Result<U256>

Returns the current nonce for an address (EIP-2612)

Source

pub fn domain_separator(&self) -> Result<B256>

Returns the EIP-712 domain separator, computed dynamically from the token name and chain ID.

Source

pub fn permit(&mut self, call: permitCall) -> Result<()>

Sets allowance via a signed EIP-2612 permit. Validates the ECDSA signature, checks the deadline, and increments the nonce. Allowed even when the token is paused.

§Errors
  • PermitExpired — current timestamp exceeds permit deadline
  • InvalidSignature — ECDSA recovery failed or recovered signer ≠ owner
Source

pub fn transfer( &mut self, msg_sender: Address, call: transferCall, ) -> Result<bool>

Transfers amount tokens from the caller to to. Enforces compliance via the TIP403Registry and deducts from the caller’s AccountKeychain spending limit.

§Errors
  • Paused — token transfers are currently paused
  • InvalidRecipient — recipient address is zero
  • PolicyForbids — TIP-403 policy rejects sender or recipient
  • SpendingLimitExceeded — access key spending limit exceeded
  • InsufficientBalance — sender balance lower than transfer amount
Source

pub fn transfer_from( &mut self, msg_sender: Address, call: transferFromCall, ) -> Result<bool>

Transfers amount on behalf of from using the caller’s allowance. Enforces compliance via the TIP403Registry.

§Errors
  • Paused — token transfers are currently paused
  • InvalidRecipient — recipient address is zero
  • PolicyForbids — TIP-403 policy rejects sender or recipient
  • InsufficientAllowance — caller allowance lower than transfer amount
  • InsufficientBalancefrom balance lower than transfer amount
Source

pub fn transfer_from_with_memo( &mut self, msg_sender: Address, call: transferFromWithMemoCall, ) -> Result<bool>

Like Self::transfer_from, but attaches a 32-byte memo.

Source

pub fn system_transfer_from( &mut self, from: Address, to: Address, amount: U256, ) -> Result<bool>

Transfers amount from from to to without approval, for use by other precompiles only (not exposed via ABI). Enforces compliance via the TIP403Registry and AccountKeychain.

§Errors
  • Paused — token transfers are currently paused
  • InvalidRecipient — recipient address is zero
  • PolicyForbids — TIP-403 policy rejects sender or recipient
  • SpendingLimitExceeded — access key spending limit exceeded
  • InsufficientBalancefrom balance lower than transfer amount
Source

fn _transfer_from( &mut self, msg_sender: Address, from: Address, to: Address, amount: U256, ) -> Result<bool>

Source

pub fn transfer_with_memo( &mut self, msg_sender: Address, call: transferWithMemoCall, ) -> Result<()>

Like Self::transfer, but attaches a 32-byte memo.

Source§

impl TIP20Token

Source

pub fn from_address(address: Address) -> Result<Self>

Creates a TIP20Token handle from a raw address.

§Errors
  • InvalidToken — address does not carry the 0x20C0 TIP-20 prefix
Source

pub fn from_address_unchecked(address: Address) -> Self

Creates a TIP20Token without validating the prefix.

§Safety

Caller must ensure is_tip20_prefix(address) returns true.

Source

pub fn initialize( &mut self, msg_sender: Address, name: &str, symbol: &str, currency: &str, quote_token: Address, admin: Address, ) -> Result<()>

Initializes the TIP-20 token precompile with metadata, quote token, supply cap, and default admin role. Called once by TIP20Factory during token creation.

Source

fn get_balance(&self, account: Address) -> Result<U256>

Source

fn set_balance(&mut self, account: Address, amount: U256) -> Result<()>

Source

fn get_allowance(&self, owner: Address, spender: Address) -> Result<U256>

Source

fn set_allowance( &mut self, owner: Address, spender: Address, amount: U256, ) -> Result<()>

Source

fn set_total_supply(&mut self, amount: U256) -> Result<()>

Source

fn check_not_paused(&self) -> Result<()>

Source

fn check_recipient(&self, to: Address) -> Result<()>

Validates that the recipient is not:

  • the zero address (preventing accidental burns)
  • another TIP20 token
Source

pub fn is_transfer_authorized(&self, from: Address, to: Address) -> Result<bool>

Check whether a transfer is authorized by the token’s TIP403Registry policy. TIP-1015: For T2+, uses directional sender/recipient checks.

Source

pub fn ensure_transfer_authorized( &self, from: Address, to: Address, ) -> Result<()>

Ensures the transfer is authorized by the token’s TIP403Registry policy.

§Errors
  • PolicyForbids — sender or recipient is not authorized by the active transfer policy
Source

pub fn check_and_update_spending_limit( &mut self, from: Address, amount: U256, ) -> Result<()>

Checks and deducts amount from the caller’s AccountKeychain spending limit.

§Errors
  • SpendingLimitExceeded — access key spending limit exceeded
Source

fn _transfer(&mut self, from: Address, to: Address, amount: U256) -> Result<()>

Source

pub fn transfer_fee_pre_tx(&mut self, from: Address, amount: U256) -> Result<()>

Transfers fee tokens from from to the fee manager before transaction execution. Respects the token’s pause state and deducts from the AccountKeychain spending limit.

§Errors
  • Paused — token transfers are currently paused
  • InsufficientBalance — sender balance lower than fee amount
  • SpendingLimitExceeded — access key spending limit exceeded
Source

pub fn transfer_fee_post_tx( &mut self, to: Address, refund: U256, actual_spending: U256, ) -> Result<()>

Refunds unused fee tokens from the fee manager back to to and emits a transfer event for the actual gas spent. Intentionally allowed when paused so that a pause transaction can still receive its fee refund. On T1C+, also restores the AccountKeychain spending limit by the refund amount.

Source§

impl TIP20Token

Source

pub fn create_precompile( address: Address, cfg: &CfgEnv<TempoHardfork>, ) -> DynPrecompile

Creates the EVM precompile for this type.

Trait Implementations§

Source§

impl ContractStorage for TIP20Token

Source§

fn address(&self) -> Address

Contract address.
Source§

fn storage(&self) -> &StorageCtx

Contract storage accessor.
Source§

fn storage_mut(&mut self) -> &mut StorageCtx

Contract storage mutable accessor.
Source§

fn is_initialized(&self) -> Result<bool>

Returns true if the contract has been initialized (has bytecode deployed).
Source§

impl Precompile for TIP20Token

Source§

fn call(&mut self, calldata: &[u8], msg_sender: Address) -> PrecompileResult

Dispatches an EVM call to this precompile. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
§

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

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

impl<T> Instrument for T

Source§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

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

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

§

fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>
where Self: Sized,

Available on crate feature propagate-header only.
Propagate a header from the request to the response. Read more
§

fn add_extension<T>(self, value: T) -> AddExtension<Self, T>
where Self: Sized,

Available on crate feature add-extension only.
Add some shareable value to request extensions. Read more
§

fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>
where Self: Sized,

Available on crate feature map-request-body only.
Apply a transformation to the request body. Read more
§

fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>
where Self: Sized,

Available on crate feature map-response-body only.
Apply a transformation to the response body. Read more
§

fn compression(self) -> Compression<Self>
where Self: Sized,

Available on crate features compression-br or compression-deflate or compression-gzip or compression-zstd only.
Compresses response bodies. Read more
§

fn decompression(self) -> Decompression<Self>
where Self: Sized,

Available on crate features decompression-br or decompression-deflate or decompression-gzip or decompression-zstd only.
Decompress response bodies. Read more
§

fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>
where Self: Sized,

Available on crate feature trace only.
High level tracing that classifies responses using HTTP status codes. Read more
§

fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>
where Self: Sized,

Available on crate feature trace only.
High level tracing that classifies responses using gRPC headers. Read more
§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Available on crate feature follow-redirect only.
Follow redirect resposes using the Standard policy. Read more
§

fn sensitive_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>
where Self: Sized,

Available on crate feature sensitive-headers only.
Mark headers as sensitive on both requests and responses. Read more
§

fn sensitive_request_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveRequestHeaders<Self>
where Self: Sized,

Available on crate feature sensitive-headers only.
Mark headers as sensitive on requests. Read more
§

fn sensitive_response_headers( self, headers: impl IntoIterator<Item = HeaderName>, ) -> SetSensitiveResponseHeaders<Self>
where Self: Sized,

Available on crate feature sensitive-headers only.
Mark headers as sensitive on responses. Read more
§

fn override_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Available on crate feature set-header only.
Insert a header into the request. Read more
§

fn append_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Available on crate feature set-header only.
Append a header into the request. Read more
§

fn insert_request_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Available on crate feature set-header only.
Insert a header into the request, if the header is not already present. Read more
§

fn override_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Available on crate feature set-header only.
Insert a header into the response. Read more
§

fn append_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Available on crate feature set-header only.
Append a header into the response. Read more
§

fn insert_response_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Available on crate feature set-header only.
Insert a header into the response, if the header is not already present. Read more
§

fn set_request_id<M>( self, header_name: HeaderName, make_request_id: M, ) -> SetRequestId<Self, M>
where Self: Sized, M: MakeRequestId,

Available on crate feature request-id only.
Add request id header and extension. Read more
§

fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>
where Self: Sized, M: MakeRequestId,

Available on crate feature request-id only.
Add request id header and extension, using x-request-id as the header name. Read more
§

fn propagate_request_id( self, header_name: HeaderName, ) -> PropagateRequestId<Self>
where Self: Sized,

Available on crate feature request-id only.
Propgate request ids from requests to responses. Read more
§

fn propagate_x_request_id(self) -> PropagateRequestId<Self>
where Self: Sized,

Available on crate feature request-id only.
Propgate request ids from requests to responses, using x-request-id as the header name. Read more
§

fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>
where Self: Sized,

Available on crate feature catch-panic only.
Catch panics and convert them into 500 Internal Server responses. Read more
§

fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>
where Self: Sized,

Available on crate feature limit only.
Intercept requests with over-sized payloads and convert them into 413 Payload Too Large responses. Read more
§

fn trim_trailing_slash(self) -> NormalizePath<Self>
where Self: Sized,

Available on crate feature normalize-path only.
Remove trailing slashes from paths. Read more
§

fn append_trailing_slash(self) -> NormalizePath<Self>
where Self: Sized,

Available on crate feature normalize-path only.
Append trailing slash to paths. Read more
§

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

impl<T> WithSubscriber for T

Source§

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

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 1552 bytes