Enum zebra_chain::transaction::Transaction
source · pub enum Transaction {
V1 {
inputs: Vec<Input>,
outputs: Vec<Output>,
lock_time: LockTime,
},
V2 {
inputs: Vec<Input>,
outputs: Vec<Output>,
lock_time: LockTime,
joinsplit_data: Option<JoinSplitData<Bctv14Proof>>,
},
V3 {
inputs: Vec<Input>,
outputs: Vec<Output>,
lock_time: LockTime,
expiry_height: Height,
joinsplit_data: Option<JoinSplitData<Bctv14Proof>>,
},
V4 {
inputs: Vec<Input>,
outputs: Vec<Output>,
lock_time: LockTime,
expiry_height: Height,
joinsplit_data: Option<JoinSplitData<Groth16Proof>>,
sapling_shielded_data: Option<ShieldedData<PerSpendAnchor>>,
},
V5 {
network_upgrade: NetworkUpgrade,
lock_time: LockTime,
expiry_height: Height,
inputs: Vec<Input>,
outputs: Vec<Output>,
sapling_shielded_data: Option<ShieldedData<SharedAnchor>>,
orchard_shielded_data: Option<ShieldedData>,
},
}
Expand description
A Zcash transaction.
A transaction is an encoded data structure that facilitates the transfer of value between two public key addresses on the Zcash ecosystem. Everything is designed to ensure that transactions can be created, propagated on the network, validated, and finally added to the global ledger of transactions (the blockchain).
Zcash has a number of different transaction formats. They are represented internally by different enum variants. Because we checkpoint on Canopy activation, we do not validate any pre-Sapling transaction types.
Variants§
V1
A fully transparent transaction (version = 1
).
Fields
V2
A Sprout transaction (version = 2
).
Fields
lock_time: LockTime
The earliest time or block height that this transaction can be added to the chain.
joinsplit_data: Option<JoinSplitData<Bctv14Proof>>
The JoinSplit data for this transaction, if any.
V3
An Overwinter transaction (version = 3
).
Fields
lock_time: LockTime
The earliest time or block height that this transaction can be added to the chain.
joinsplit_data: Option<JoinSplitData<Bctv14Proof>>
The JoinSplit data for this transaction, if any.
V4
A Sapling transaction (version = 4
).
Fields
lock_time: LockTime
The earliest time or block height that this transaction can be added to the chain.
joinsplit_data: Option<JoinSplitData<Groth16Proof>>
The JoinSplit data for this transaction, if any.
sapling_shielded_data: Option<ShieldedData<PerSpendAnchor>>
The sapling shielded data for this transaction, if any.
V5
A version = 5
transaction , which supports Orchard, Sapling, and transparent, but not Sprout.
Fields
network_upgrade: NetworkUpgrade
The Network Upgrade for this transaction.
Derived from the ConsensusBranchId field.
lock_time: LockTime
The earliest time or block height that this transaction can be added to the chain.
sapling_shielded_data: Option<ShieldedData<SharedAnchor>>
The sapling shielded data for this transaction, if any.
orchard_shielded_data: Option<ShieldedData>
The orchard data for this transaction, if any.
Implementations§
source§impl Transaction
impl Transaction
sourcepub fn new_v5_coinbase(
network: &Network,
height: Height,
outputs: impl IntoIterator<Item = (Amount<NonNegative>, Script)>,
extra_coinbase_data: Vec<u8>,
) -> Transaction
pub fn new_v5_coinbase( network: &Network, height: Height, outputs: impl IntoIterator<Item = (Amount<NonNegative>, Script)>, extra_coinbase_data: Vec<u8>, ) -> Transaction
Returns a new version 5 coinbase transaction for network
and height
,
which contains the specified outputs
.
sourcepub fn new_v4_coinbase(
_network: &Network,
height: Height,
outputs: impl IntoIterator<Item = (Amount<NonNegative>, Script)>,
like_zcashd: bool,
extra_coinbase_data: Vec<u8>,
) -> Transaction
pub fn new_v4_coinbase( _network: &Network, height: Height, outputs: impl IntoIterator<Item = (Amount<NonNegative>, Script)>, like_zcashd: bool, extra_coinbase_data: Vec<u8>, ) -> Transaction
Returns a new version 4 coinbase transaction for network
and height
,
which contains the specified outputs
.
If like_zcashd
is true, try to match the coinbase transactions generated by zcashd
in the getblocktemplate
RPC.
source§impl Transaction
impl Transaction
sourcepub fn v1_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
pub fn v1_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
Generate a proptest strategy for V1 Transactions
sourcepub fn v2_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
pub fn v2_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
Generate a proptest strategy for V2 Transactions
sourcepub fn v3_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
pub fn v3_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
Generate a proptest strategy for V3 Transactions
sourcepub fn v4_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
pub fn v4_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
Generate a proptest strategy for V4 Transactions
sourcepub fn v5_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
pub fn v5_strategy(ledger_state: LedgerState) -> BoxedStrategy<Self>
Generate a proptest strategy for V5 Transactions
sourcepub fn vec_strategy(
ledger_state: LedgerState,
len: usize,
) -> BoxedStrategy<Vec<Arc<Self>>>
pub fn vec_strategy( ledger_state: LedgerState, len: usize, ) -> BoxedStrategy<Vec<Arc<Self>>>
Proptest Strategy for creating a Vector of transactions where the first transaction is always the only coinbase transaction
sourcepub fn for_each_value_mut<F>(&mut self, f: F)
pub fn for_each_value_mut<F>(&mut self, f: F)
Apply f
to the transparent output, v_sprout_new
, and v_sprout_old
values
in this transaction, regardless of version.
sourcepub fn for_each_value_balance_mut<F>(&mut self, f: F)
pub fn for_each_value_balance_mut<F>(&mut self, f: F)
Apply f
to the sapling value balance and orchard value balance
in this transaction, regardless of version.
sourcepub fn fix_overflow(&mut self)
pub fn fix_overflow(&mut self)
Fixup transparent values and shielded value balances, so that transaction and chain value pools won’t overflow MAX_MONEY.
These fixes are applied to coinbase and non-coinbase transactions.
sourcepub fn fix_chain_value_pools(
&mut self,
chain_value_pools: ValueBalance<NonNegative>,
outputs: &HashMap<OutPoint, Output>,
) -> Result<(Amount<NonNegative>, ValueBalance<NonNegative>), ValueBalanceError>
pub fn fix_chain_value_pools( &mut self, chain_value_pools: ValueBalance<NonNegative>, outputs: &HashMap<OutPoint, Output>, ) -> Result<(Amount<NonNegative>, ValueBalance<NonNegative>), ValueBalanceError>
Fixup transparent values and shielded value balances, so that this transaction passes the “non-negative chain value pool” checks. (These checks use the sum of unspent outputs for each transparent and shielded pool.)
These fixes are applied to coinbase and non-coinbase transactions.
chain_value_pools
contains the chain value pool balances,
as of the previous transaction in this block
(or the last transaction in the previous block).
outputs
must contain all the transparent::Output
s spent in this transaction.
Currently, these fixes almost always leave some remaining value in each transparent and shielded chain value pool.
Before fixing the chain value balances, this method calls fix_overflow
to make sure that transaction and chain value pools don’t overflow MAX_MONEY.
After fixing the chain value balances, this method calls fix_remaining_value
to fix the remaining value in the transaction value pool.
Returns the remaining transaction value, and the updated chain value balances.
§Panics
If any spent transparent::Output
is missing from
transparent::OutPoint
s.
sourcefn input_value_pool(
&self,
outputs: &HashMap<OutPoint, Output>,
) -> Result<Amount<NonNegative>, ValueBalanceError>
fn input_value_pool( &self, outputs: &HashMap<OutPoint, Output>, ) -> Result<Amount<NonNegative>, ValueBalanceError>
Returns the total input value of this transaction’s value pool.
This is the sum of transparent inputs, sprout input values, and if positive, the sapling and orchard value balances.
outputs
must contain all the transparent::Output
s spent in this transaction.
sourcepub fn fix_remaining_value(
&mut self,
outputs: &HashMap<OutPoint, Output>,
) -> Result<Amount<NonNegative>, ValueBalanceError>
pub fn fix_remaining_value( &mut self, outputs: &HashMap<OutPoint, Output>, ) -> Result<Amount<NonNegative>, ValueBalanceError>
Fixup non-coinbase transparent values and shielded value balances, so that this transaction passes the “non-negative remaining transaction value” check. (This check uses the sum of inputs minus outputs.)
Returns the remaining transaction value.
outputs
must contain all the transparent::Output
s spent in this transaction.
Currently, these fixes almost always leave some remaining value in the transaction value pool.
§Panics
If any spent transparent::Output
is missing from
transparent::OutPoint
s.
source§impl Transaction
impl Transaction
sourcepub fn hash(&self) -> Hash
pub fn hash(&self) -> Hash
Compute the hash (mined transaction ID) of this transaction.
The hash uniquely identifies mined v5 transactions, and all v1-v4 transactions, whether mined or unmined.
sourcepub fn unmined_id(&self) -> UnminedTxId
pub fn unmined_id(&self) -> UnminedTxId
Compute the unmined transaction ID of this transaction.
This ID uniquely identifies unmined transactions, regardless of version.
sourcepub fn sighash(
&self,
branch_id: ConsensusBranchId,
hash_type: HashType,
all_previous_outputs: &[Output],
input_index_script_code: Option<(usize, Vec<u8>)>,
) -> SigHash
pub fn sighash( &self, branch_id: ConsensusBranchId, hash_type: HashType, all_previous_outputs: &[Output], input_index_script_code: Option<(usize, Vec<u8>)>, ) -> SigHash
Calculate the sighash for the current transaction.
If you need to compute multiple sighashes for the same transactions,
it’s more efficient to use Transaction::sighasher()
.
§Details
all_previous_outputs
represents the UTXOs being spent by each input
in the transaction.
The input_index_script_code
tuple indicates the index of the
transparent Input for which we are producing a sighash and the
respective script code being validated, or None if it’s a shielded
input.
§Panics
- if passed in any NetworkUpgrade from before NetworkUpgrade::Overwinter
- if called on a v1 or v2 transaction
- if the input index points to a transparent::Input::CoinBase
- if the input index is out of bounds for self.inputs()
sourcepub fn sighasher<'a>(
&'a self,
branch_id: ConsensusBranchId,
all_previous_outputs: &'a [Output],
) -> SigHasher<'a>
pub fn sighasher<'a>( &'a self, branch_id: ConsensusBranchId, all_previous_outputs: &'a [Output], ) -> SigHasher<'a>
Return a SigHasher
for this transaction.
sourcepub fn auth_digest(&self) -> Option<AuthDigest>
pub fn auth_digest(&self) -> Option<AuthDigest>
Compute the authorizing data commitment of this transaction as specified in ZIP-244.
Returns None for pre-v5 transactions.
sourcepub fn has_transparent_or_shielded_inputs(&self) -> bool
pub fn has_transparent_or_shielded_inputs(&self) -> bool
Does this transaction have transparent or shielded inputs?
sourcepub fn has_shielded_inputs(&self) -> bool
pub fn has_shielded_inputs(&self) -> bool
Does this transaction have shielded inputs?
See Self::has_transparent_or_shielded_inputs
for details.
sourcepub fn has_transparent_or_shielded_outputs(&self) -> bool
pub fn has_transparent_or_shielded_outputs(&self) -> bool
Does this transaction have transparent or shielded outputs?
sourcepub fn has_shielded_outputs(&self) -> bool
pub fn has_shielded_outputs(&self) -> bool
Does this transaction have shielded outputs?
See Self::has_transparent_or_shielded_outputs
for details.
sourcepub fn has_enough_orchard_flags(&self) -> bool
pub fn has_enough_orchard_flags(&self) -> bool
Does this transaction has at least one flag when we have at least one orchard action?
sourcepub fn coinbase_spend_restriction(
&self,
spend_height: Height,
) -> CoinbaseSpendRestriction
pub fn coinbase_spend_restriction( &self, spend_height: Height, ) -> CoinbaseSpendRestriction
Returns the CoinbaseSpendRestriction
for this transaction,
assuming it is mined at spend_height
.
sourcepub fn is_overwintered(&self) -> bool
pub fn is_overwintered(&self) -> bool
Return if the fOverwintered
flag of this transaction is set.
sourcepub fn raw_lock_time(&self) -> u32
pub fn raw_lock_time(&self) -> u32
Get the raw lock time value.
sourcepub fn lock_time_is_time(&self) -> bool
pub fn lock_time_is_time(&self) -> bool
Returns true
if this transaction’s lock_time
is a LockTime::Time
.
Returns false
if it is a LockTime::Height
(locked or unlocked), is unlocked,
or if the transparent input sequence numbers have disabled lock times.
sourcepub fn expiry_height(&self) -> Option<Height>
pub fn expiry_height(&self) -> Option<Height>
Get this transaction’s expiry height, if any.
sourcepub fn expiry_height_mut(&mut self) -> &mut Height
pub fn expiry_height_mut(&mut self) -> &mut Height
sourcepub fn network_upgrade(&self) -> Option<NetworkUpgrade>
pub fn network_upgrade(&self) -> Option<NetworkUpgrade>
Get this transaction’s network upgrade field, if any.
This field is serialized as nConsensusBranchId
(7.1).
sourcepub fn inputs(&self) -> &[Input]
pub fn inputs(&self) -> &[Input]
Access the transparent inputs of this transaction, regardless of version.
sourcepub fn inputs_mut(&mut self) -> &mut Vec<Input>
pub fn inputs_mut(&mut self) -> &mut Vec<Input>
Modify the transparent inputs of this transaction, regardless of version.
sourcepub fn spent_outpoints(&self) -> impl Iterator<Item = OutPoint> + '_
pub fn spent_outpoints(&self) -> impl Iterator<Item = OutPoint> + '_
Access the transparent::OutPoint
s spent by this transaction’s transparent::Input
s.
sourcepub fn outputs(&self) -> &[Output]
pub fn outputs(&self) -> &[Output]
Access the transparent outputs of this transaction, regardless of version.
sourcepub fn outputs_mut(&mut self) -> &mut Vec<Output>
pub fn outputs_mut(&mut self) -> &mut Vec<Output>
Modify the transparent outputs of this transaction, regardless of version.
sourcepub fn is_coinbase(&self) -> bool
pub fn is_coinbase(&self) -> bool
Returns true
if this transaction has valid inputs for a coinbase
transaction, that is, has a single input and it is a coinbase input
(null prevout).
sourcepub fn is_valid_non_coinbase(&self) -> bool
pub fn is_valid_non_coinbase(&self) -> bool
Returns true
if this transaction has valid inputs for a non-coinbase
transaction, that is, does not have any coinbase input (non-null prevouts).
Note that it’s possible for a transaction return false in both
Transaction::is_coinbase
and Transaction::is_valid_non_coinbase
,
though those transactions will be rejected.
sourcepub fn sprout_groth16_joinsplits(
&self,
) -> Box<dyn Iterator<Item = &JoinSplit<Groth16Proof>> + '_>
pub fn sprout_groth16_joinsplits( &self, ) -> Box<dyn Iterator<Item = &JoinSplit<Groth16Proof>> + '_>
Returns the Sprout JoinSplit<Groth16Proof>
s in this transaction, regardless of version.
sourcepub fn joinsplit_count(&self) -> usize
pub fn joinsplit_count(&self) -> usize
Returns the number of JoinSplit
s in this transaction, regardless of version.
sourcepub fn sprout_nullifiers(&self) -> Box<dyn Iterator<Item = &Nullifier> + '_>
pub fn sprout_nullifiers(&self) -> Box<dyn Iterator<Item = &Nullifier> + '_>
Access the sprout::Nullifiers in this transaction, regardless of version.
sourcepub fn sprout_joinsplit_pub_key(&self) -> Option<VerificationKeyBytes>
pub fn sprout_joinsplit_pub_key(&self) -> Option<VerificationKeyBytes>
Access the JoinSplit public validating key in this transaction, regardless of version, if any.
sourcepub fn has_sprout_joinsplit_data(&self) -> bool
pub fn has_sprout_joinsplit_data(&self) -> bool
Return if the transaction has any Sprout JoinSplit data.
sourcepub fn sprout_note_commitments(
&self,
) -> Box<dyn Iterator<Item = &NoteCommitment> + '_>
pub fn sprout_note_commitments( &self, ) -> Box<dyn Iterator<Item = &NoteCommitment> + '_>
Returns the Sprout note commitments in this transaction.
sourcepub fn sapling_anchors(&self) -> Box<dyn Iterator<Item = Root> + '_>
pub fn sapling_anchors(&self) -> Box<dyn Iterator<Item = Root> + '_>
Access the deduplicated sapling::tree::Root
s in this transaction,
regardless of version.
sourcepub fn sapling_spends_per_anchor(
&self,
) -> Box<dyn Iterator<Item = Spend<PerSpendAnchor>> + '_>
pub fn sapling_spends_per_anchor( &self, ) -> Box<dyn Iterator<Item = Spend<PerSpendAnchor>> + '_>
Iterate over the sapling Spend
s for this transaction,
returning Spend<PerSpendAnchor>
regardless of the underlying
transaction version.
Shared anchors in V5 transactions are copied into each sapling spend. This allows the same code to validate spends from V4 and V5 transactions.
§Correctness
Do not use this function for serialization.
sourcepub fn sapling_outputs(&self) -> Box<dyn Iterator<Item = &Output> + '_>
pub fn sapling_outputs(&self) -> Box<dyn Iterator<Item = &Output> + '_>
Iterate over the sapling Output
s for this
transaction
sourcepub fn sapling_nullifiers(&self) -> Box<dyn Iterator<Item = &Nullifier> + '_>
pub fn sapling_nullifiers(&self) -> Box<dyn Iterator<Item = &Nullifier> + '_>
Access the sapling::Nullifiers in this transaction, regardless of version.
sourcepub fn sapling_note_commitments(&self) -> Box<dyn Iterator<Item = &Fq> + '_>
pub fn sapling_note_commitments(&self) -> Box<dyn Iterator<Item = &Fq> + '_>
Returns the Sapling note commitments in this transaction, regardless of version.
sourcepub fn has_sapling_shielded_data(&self) -> bool
pub fn has_sapling_shielded_data(&self) -> bool
Return if the transaction has any Sapling shielded data.
sourcepub fn orchard_shielded_data(&self) -> Option<&ShieldedData>
pub fn orchard_shielded_data(&self) -> Option<&ShieldedData>
Access the orchard::ShieldedData
in this transaction,
regardless of version.
sourcepub fn orchard_shielded_data_mut(&mut self) -> Option<&mut ShieldedData>
pub fn orchard_shielded_data_mut(&mut self) -> Option<&mut ShieldedData>
Modify the orchard::ShieldedData
in this transaction,
regardless of version.
sourcepub fn orchard_actions(&self) -> impl Iterator<Item = &Action>
pub fn orchard_actions(&self) -> impl Iterator<Item = &Action>
Iterate over the orchard::Action
s in this transaction, if there are any,
regardless of version.
sourcepub fn orchard_nullifiers(&self) -> impl Iterator<Item = &Nullifier>
pub fn orchard_nullifiers(&self) -> impl Iterator<Item = &Nullifier>
Access the orchard::Nullifier
s in this transaction, if there are any,
regardless of version.
sourcepub fn orchard_note_commitments(&self) -> impl Iterator<Item = &Base>
pub fn orchard_note_commitments(&self) -> impl Iterator<Item = &Base>
Access the note commitments in this transaction, if there are any, regardless of version.
sourcepub fn orchard_flags(&self) -> Option<Flags>
pub fn orchard_flags(&self) -> Option<Flags>
Access the orchard::Flags
in this transaction, if there is any,
regardless of version.
sourcepub fn has_orchard_shielded_data(&self) -> bool
pub fn has_orchard_shielded_data(&self) -> bool
Return if the transaction has any Orchard shielded data, regardless of version.
sourcefn transparent_value_balance_from_outputs(
&self,
outputs: &HashMap<OutPoint, Output>,
) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
fn transparent_value_balance_from_outputs( &self, outputs: &HashMap<OutPoint, Output>, ) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
Return the transparent value balance, using the outputs spent by this transaction.
See transparent_value_balance
for details.
sourcepub fn output_values_mut(
&mut self,
) -> impl Iterator<Item = &mut Amount<NonNegative>>
pub fn output_values_mut( &mut self, ) -> impl Iterator<Item = &mut Amount<NonNegative>>
Modify the transparent output values of this transaction, regardless of version.
sourcepub fn output_values_to_sprout(
&self,
) -> Box<dyn Iterator<Item = &Amount<NonNegative>> + '_>
pub fn output_values_to_sprout( &self, ) -> Box<dyn Iterator<Item = &Amount<NonNegative>> + '_>
Returns the vpub_old
fields from JoinSplit
s in this transaction,
regardless of version, in the order they appear in the transaction.
These values are added to the sprout chain value pool, and removed from the value pool of this transaction.
sourcepub fn output_values_to_sprout_mut(
&mut self,
) -> Box<dyn Iterator<Item = &mut Amount<NonNegative>> + '_>
pub fn output_values_to_sprout_mut( &mut self, ) -> Box<dyn Iterator<Item = &mut Amount<NonNegative>> + '_>
Modify the vpub_old
fields from JoinSplit
s in this transaction,
regardless of version, in the order they appear in the transaction.
See output_values_to_sprout
for details.
sourcepub fn input_values_from_sprout(
&self,
) -> Box<dyn Iterator<Item = &Amount<NonNegative>> + '_>
pub fn input_values_from_sprout( &self, ) -> Box<dyn Iterator<Item = &Amount<NonNegative>> + '_>
Returns the vpub_new
fields from JoinSplit
s in this transaction,
regardless of version, in the order they appear in the transaction.
These values are removed from the value pool of this transaction. and added to the sprout chain value pool.
sourcepub fn input_values_from_sprout_mut(
&mut self,
) -> Box<dyn Iterator<Item = &mut Amount<NonNegative>> + '_>
pub fn input_values_from_sprout_mut( &mut self, ) -> Box<dyn Iterator<Item = &mut Amount<NonNegative>> + '_>
Modify the vpub_new
fields from JoinSplit
s in this transaction,
regardless of version, in the order they appear in the transaction.
See input_values_from_sprout
for details.
sourcefn sprout_joinsplit_value_balances(
&self,
) -> impl Iterator<Item = ValueBalance<NegativeAllowed>> + '_
fn sprout_joinsplit_value_balances( &self, ) -> impl Iterator<Item = ValueBalance<NegativeAllowed>> + '_
Return a list of sprout value balances,
the changes in the transaction value pool due to each sprout JoinSplit
.
Each value balance is the sprout vpub_new
field, minus the vpub_old
field.
See sprout_value_balance
for details.
sourcefn sprout_value_balance(
&self,
) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
fn sprout_value_balance( &self, ) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
Return the sprout value balance,
the change in the transaction value pool due to sprout JoinSplit
s.
The sum of all sprout vpub_new
fields, minus the sum of all vpub_old
fields.
Positive values are added to this transaction’s value pool, and removed from the sprout chain value pool. Negative values are removed from this transaction, and added to the sprout pool.
https://zebra.zfnd.org/dev/rfcs/0012-value-pools.html#definitions
sourcepub fn sapling_value_balance(&self) -> ValueBalance<NegativeAllowed>
pub fn sapling_value_balance(&self) -> ValueBalance<NegativeAllowed>
Return the sapling value balance,
the change in the transaction value pool due to sapling Spend
s and Output
s.
Returns the valueBalanceSapling
field in this transaction.
Positive values are added to this transaction’s value pool, and removed from the sapling chain value pool. Negative values are removed from this transaction, and added to sapling pool.
https://zebra.zfnd.org/dev/rfcs/0012-value-pools.html#definitions
sourcepub fn sapling_value_balance_mut(
&mut self,
) -> Option<&mut Amount<NegativeAllowed>>
pub fn sapling_value_balance_mut( &mut self, ) -> Option<&mut Amount<NegativeAllowed>>
Modify the value_balance
field from the sapling::ShieldedData
in this transaction,
regardless of version.
See sapling_value_balance
for details.
sourcepub fn orchard_value_balance(&self) -> ValueBalance<NegativeAllowed>
pub fn orchard_value_balance(&self) -> ValueBalance<NegativeAllowed>
Return the orchard value balance, the change in the transaction value
pool due to orchard::Action
s.
Returns the valueBalanceOrchard
field in this transaction.
Positive values are added to this transaction’s value pool, and removed from the orchard chain value pool. Negative values are removed from this transaction, and added to orchard pool.
https://zebra.zfnd.org/dev/rfcs/0012-value-pools.html#definitions
sourcepub fn orchard_value_balance_mut(
&mut self,
) -> Option<&mut Amount<NegativeAllowed>>
pub fn orchard_value_balance_mut( &mut self, ) -> Option<&mut Amount<NegativeAllowed>>
Modify the value_balance
field from the orchard::ShieldedData
in this transaction,
regardless of version.
See orchard_value_balance
for details.
sourcepub(crate) fn value_balance_from_outputs(
&self,
outputs: &HashMap<OutPoint, Output>,
) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
pub(crate) fn value_balance_from_outputs( &self, outputs: &HashMap<OutPoint, Output>, ) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
Returns the value balances for this transaction using the provided transparent outputs.
sourcepub fn value_balance(
&self,
utxos: &HashMap<OutPoint, Utxo>,
) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
pub fn value_balance( &self, utxos: &HashMap<OutPoint, Utxo>, ) -> Result<ValueBalance<NegativeAllowed>, ValueBalanceError>
Returns the value balances for this transaction.
These are the changes in the transaction value pool, split up into transparent, Sprout, Sapling, and Orchard values.
Calculated as the sum of the inputs and outputs from each pool, or the sum of the value balances from each pool.
Positive values are added to this transaction’s value pool, and removed from the corresponding chain value pool. Negative values are removed from this transaction, and added to the corresponding pool.
https://zebra.zfnd.org/dev/rfcs/0012-value-pools.html#definitions
utxos
must contain the utxos of every input in the transaction, including UTXOs created by
earlier transactions in this block.
§Note
The chain value pool has the opposite sign to the transaction value pool.
Trait Implementations§
source§impl Arbitrary for Transaction
impl Arbitrary for Transaction
source§type Parameters = LedgerState
type Parameters = LedgerState
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.source§fn arbitrary_with(ledger_state: Self::Parameters) -> Self::Strategy
fn arbitrary_with(ledger_state: Self::Parameters) -> Self::Strategy
source§type Strategy = BoxedStrategy<Transaction>
type Strategy = BoxedStrategy<Transaction>
Strategy
used to generate values of type Self
.source§impl Clone for Transaction
impl Clone for Transaction
source§fn clone(&self) -> Transaction
fn clone(&self) -> Transaction
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Transaction
impl Debug for Transaction
source§impl Display for Transaction
impl Display for Transaction
source§impl From<&Transaction> for AuthDigest
impl From<&Transaction> for AuthDigest
source§fn from(transaction: &Transaction) -> Self
fn from(transaction: &Transaction) -> Self
source§impl From<&Transaction> for Hash
impl From<&Transaction> for Hash
source§fn from(transaction: &Transaction) -> Self
fn from(transaction: &Transaction) -> Self
source§impl From<&Transaction> for UnminedTx
impl From<&Transaction> for UnminedTx
source§fn from(transaction: &Transaction) -> Self
fn from(transaction: &Transaction) -> Self
source§impl From<&Transaction> for UnminedTxId
impl From<&Transaction> for UnminedTxId
source§fn from(transaction: &Transaction) -> Self
fn from(transaction: &Transaction) -> Self
source§impl From<&Transaction> for WtxId
impl From<&Transaction> for WtxId
source§fn from(transaction: &Transaction) -> Self
fn from(transaction: &Transaction) -> Self
source§impl From<Transaction> for AuthDigest
impl From<Transaction> for AuthDigest
source§fn from(transaction: Transaction) -> Self
fn from(transaction: Transaction) -> Self
source§impl From<Transaction> for Hash
impl From<Transaction> for Hash
source§fn from(transaction: Transaction) -> Self
fn from(transaction: Transaction) -> Self
source§impl From<Transaction> for UnminedTx
impl From<Transaction> for UnminedTx
source§fn from(transaction: Transaction) -> Self
fn from(transaction: Transaction) -> Self
source§impl From<Transaction> for UnminedTxId
impl From<Transaction> for UnminedTxId
source§fn from(transaction: Transaction) -> Self
fn from(transaction: Transaction) -> Self
source§impl From<Transaction> for WtxId
impl From<Transaction> for WtxId
source§fn from(transaction: Transaction) -> Self
fn from(transaction: Transaction) -> Self
source§impl PartialEq for Transaction
impl PartialEq for Transaction
source§impl Serialize for Transaction
impl Serialize for Transaction
source§impl TrustedPreallocate for Transaction
impl TrustedPreallocate for Transaction
No valid Zcash message contains more transactions than can fit in a single block
tx
messages contain a single transaction, and block
messages are limited to the maximum
block size.
source§fn max_allocation() -> u64
fn max_allocation() -> u64
Vec<T: TrustedPreallocate>
which can possibly be received from an honest peer.source§impl TryFrom<&Transaction> for Transaction
impl TryFrom<&Transaction> for Transaction
source§impl ZcashDeserialize for Transaction
impl ZcashDeserialize for Transaction
source§fn zcash_deserialize<R: Read>(reader: R) -> Result<Self, SerializationError>
fn zcash_deserialize<R: Read>(reader: R) -> Result<Self, SerializationError>
source§impl ZcashSerialize for Transaction
impl ZcashSerialize for Transaction
source§fn zcash_serialize_to_vec(&self) -> Result<Vec<u8>, Error>
fn zcash_serialize_to_vec(&self) -> Result<Vec<u8>, Error>
source§fn zcash_serialized_size(&self) -> usize
fn zcash_serialized_size(&self) -> usize
self
by using a fake writer.impl Eq for Transaction
impl StructuralPartialEq for Transaction
Auto Trait Implementations§
impl Freeze for Transaction
impl RefUnwindSafe for Transaction
impl Send for Transaction
impl Sync for Transaction
impl Unpin for Transaction
impl UnwindSafe for Transaction
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
§fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
§fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
§fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
§fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
§fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
§fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
§fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
§fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
§fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
§fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
§fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
§fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
§fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
§fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
§fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
§fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
§fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
§fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
§fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
] or
a color-specific method, such as [OwoColorize::green
], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
] or
a color-specific method, such as [OwoColorize::on_yellow
], Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
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) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
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
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<Response, Error> ResponseResult<Response, Error> for Response
impl<Response, Error> ResponseResult<Response, Error> for Response
source§fn into_result(self) -> Result<Response, Error>
fn into_result(self) -> Result<Response, Error>
Result
that can be sent as a response.source§impl<T> SectionExt for T
impl<T> SectionExt for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.