drk

Struct Drk

Source
pub struct Drk {
    pub wallet: WalletPtr,
    pub rpc_client: Option<RpcClient>,
    pub fun: bool,
}
Expand description

CLI-util structure

Fields§

§wallet: WalletPtr

Wallet database operations handler

§rpc_client: Option<RpcClient>

JSON-RPC client to execute requests to darkfid daemon

§fun: bool

Flag indicating if fun stuff are enabled

Implementations§

Source§

impl Drk

Source

pub async fn subscribe_blocks( &self, endpoint: Url, ex: Arc<Executor<'static>>, ) -> Result<()>

Subscribes to darkfid’s JSON-RPC notification endpoint that serves new confirmed blocks. Upon receiving them, all the transactions are scanned and we check if any of them call the money contract, and if the payments are intended for us. If so, we decrypt them and append the metadata to our wallet. If a reorg block is received, we revert to its previous height and then scan it. We assume that the blocks up to that point are unchanged, since darkfid will just broadcast the sequence after the reorg.

Source

async fn scan_block(&self, block: &BlockInfo) -> Result<()>

scan_block will go over over transactions in a block and handle their calls based on the called contract. Additionally, will update last_scanned_block to the provided block height and will store its height, hash and inverse query.

Source

pub async fn scan_blocks(&self) -> WalletDbResult<()>

Scans the blockchain for wallet relevant transactions, starting from the last scanned block. If a reorg has happened, we revert to its previous height and then scan from there.

Source

async fn get_last_confirmed_block(&self) -> Result<(u32, String)>

Source

async fn get_block_by_height(&self, height: u32) -> Result<BlockInfo>

Source

pub async fn broadcast_tx(&self, tx: &Transaction) -> Result<String>

Broadcast a given transaction to darkfid and forward onto the network. Returns the transaction ID upon success.

Source

pub async fn get_tx( &self, tx_hash: &TransactionHash, ) -> Result<Option<Transaction>>

Queries darkfid for a tx with given hash.

Source

pub async fn simulate_tx(&self, tx: &Transaction) -> Result<bool>

Simulate the transaction with the state machine.

Source

pub async fn lookup_zkas( &self, contract_id: &ContractId, ) -> Result<Vec<(String, Vec<u8>)>>

Try to fetch zkas bincodes for the given ContractId.

Source

pub async fn get_tx_gas( &self, tx: &Transaction, include_fee: bool, ) -> Result<u64>

Queries darkfid for given transaction’s gas.

Source

pub async fn get_next_block_height(&self) -> Result<u32>

Queries darkfid for current best fork next height.

Source

pub async fn get_block_target(&self) -> Result<u32>

Queries darkfid for currently configured block target time.

Source

pub async fn ping(&self) -> Result<()>

Auxiliary function to ping configured darkfid daemon for liveness.

Source

pub async fn darkfid_daemon_request( &self, method: &str, params: &JsonValue, ) -> Result<JsonValue>

Auxiliary function to execute a request towards the configured darkfid daemon JSON-RPC endpoint.

Source

pub async fn stop_rpc_client(&self) -> Result<()>

Auxiliary function to stop current JSON-RPC client, if its initialized.

Source§

impl Drk

Source

pub async fn transfer( &self, amount: &str, token_id: TokenId, recipient: PublicKey, spend_hook: Option<FuncId>, user_data: Option<Base>, half_split: bool, ) -> Result<Transaction>

Create a payment transaction. Returns the transaction object on success.

Source§

impl Drk

Source

pub async fn init_swap( &self, value_pair: (u64, u64), token_pair: (TokenId, TokenId), user_data_blind_send: Option<BaseBlind>, spend_hook_recv: Option<FuncId>, user_data_recv: Option<Base>, ) -> Result<PartialSwapData>

Initialize the first half of an atomic swap

Source

pub async fn join_swap( &self, partial: PartialSwapData, user_data_blind_send: Option<BaseBlind>, spend_hook_recv: Option<FuncId>, user_data_recv: Option<Base>, ) -> Result<Transaction>

Create a full transaction by inspecting and verifying given partial swap data, making the other half, and joining all this into a Transaction object.

Source

pub async fn inspect_swap(&self, bytes: Vec<u8>) -> Result<()>

Inspect and verify a given swap (half or full) transaction

Source

pub async fn sign_swap(&self, tx: &mut Transaction) -> Result<()>

Sign given swap transaction by retrieving the secret key from the encrypted note and prepending it to the transaction’s signatures.

Source§

impl Drk

Source

fn derive_token_attributes( &self, mint_authority: SecretKey, token_blind: BaseBlind, ) -> TokenAttributes

Auxiliary function to derive TokenAttributes for provided secret key and token blind.

Source

pub async fn import_mint_authority( &self, mint_authority: SecretKey, token_blind: BaseBlind, ) -> Result<TokenId>

Import a token mint authority into the wallet.

Source

async fn parse_mint_authority_record( &self, row: &[Value], ) -> Result<(TokenId, SecretKey, BaseBlind, bool)>

Auxiliary function to parse a MONEY_TOKENS_TABLE records. The boolean in the returned tuples notes if the token mint authority is frozen.

Source

pub fn reset_mint_authorities(&self) -> WalletDbResult<()>

Reset all token mint authorities frozen status in the wallet.

Source

pub async fn get_mint_authorities( &self, ) -> Result<Vec<(TokenId, SecretKey, BaseBlind, bool)>>

Fetch all token mint authorities from the wallet.

Source

async fn get_token_mint_authority( &self, token_id: &TokenId, ) -> Result<(TokenId, SecretKey, BaseBlind, bool)>

Fetch provided token unfrozen mint authority from the wallet.

Source

pub async fn mint_token( &self, amount: &str, recipient: PublicKey, token_id: TokenId, spend_hook: Option<FuncId>, user_data: Option<Base>, ) -> Result<Transaction>

Create a token mint transaction. Returns the transaction object on success.

Source

pub async fn freeze_token(&self, token_id: TokenId) -> Result<Transaction>

Create a token freeze transaction. Returns the transaction object on success.

Source§

impl Drk

Source

pub async fn initialize_money(&self) -> WalletDbResult<()>

Initialize wallet with tables for the Money contract.

Source

pub async fn money_keygen(&self) -> WalletDbResult<()>

Generate a new keypair and place it into the wallet.

Source

pub async fn default_secret(&self) -> Result<SecretKey>

Fetch default secret key from the wallet.

Source

pub async fn default_address(&self) -> Result<PublicKey>

Fetch default pubkey from the wallet.

Source

pub fn set_default_address(&self, idx: usize) -> WalletDbResult<()>

Set provided index address as default in the wallet.

Source

pub async fn addresses(&self) -> Result<Vec<(u64, PublicKey, SecretKey, u64)>>

Fetch all pukeys from the wallet.

Source

pub async fn get_money_secrets(&self) -> Result<Vec<SecretKey>>

Fetch all secret keys from the wallet.

Source

pub async fn import_money_secrets( &self, secrets: Vec<SecretKey>, ) -> Result<Vec<PublicKey>>

Import given secret keys into the wallet. If the key already exists, it will be skipped. Returns the respective PublicKey objects for the imported keys.

Source

pub async fn money_balance(&self) -> Result<HashMap<String, u64>>

Fetch known unspent balances from the wallet and return them as a hashmap.

Source

pub async fn get_coins( &self, fetch_spent: bool, ) -> Result<Vec<(OwnCoin, bool, String)>>

Fetch all coins and their metadata related to the Money contract from the wallet. Optionally also fetch spent ones. The boolean in the returned tuple notes if the coin was marked as spent.

Source

pub async fn get_transaction_coins( &self, spent_tx_hash: &String, ) -> Result<Vec<OwnCoin>>

Fetch provided transaction coins from the wallet.

Source

pub async fn get_token_coins(&self, token_id: &TokenId) -> Result<Vec<OwnCoin>>

Fetch provided token unspend balances from the wallet.

Source

pub async fn get_contract_token_coins( &self, token_id: &TokenId, spend_hook: &FuncId, user_data: &Base, ) -> Result<Vec<OwnCoin>>

Fetch provided contract specified token unspend balances from the wallet.

Source

async fn parse_coin_record( &self, row: &[Value], ) -> Result<(OwnCoin, bool, String)>

Auxiliary function to parse a MONEY_COINS_TABLE record. The boolean in the returned tuple notes if the coin was marked as spent.

Source

pub async fn add_alias( &self, alias: String, token_id: TokenId, ) -> WalletDbResult<()>

Create an alias record for provided Token ID.

Source

pub async fn get_aliases( &self, alias_filter: Option<String>, token_id_filter: Option<TokenId>, ) -> Result<HashMap<String, TokenId>>

Fetch all aliases from the wallet. Optionally filter using alias name and/or token id.

Source

pub async fn get_aliases_mapped_by_token( &self, ) -> Result<HashMap<String, String>>

Fetch all aliases from the wallet, mapped by token id.

Source

pub async fn remove_alias(&self, alias: String) -> WalletDbResult<()>

Remove provided alias record from the wallet database.

Source

pub async fn unspend_coin(&self, coin: &Coin) -> WalletDbResult<()>

Mark a given coin in the wallet as unspent.

Source

pub async fn put_money_tree(&self, tree: &MerkleTree) -> WalletDbResult<()>

Replace the Money Merkle tree in the wallet.

Source

pub async fn get_money_tree(&self) -> Result<MerkleTree>

Fetch the Money Merkle tree from the wallet.

Source

pub async fn get_money_tree_state_query(&self) -> Result<String>

Auxiliary function to fetch the current Money Merkle tree state, as an update query.

Source

pub async fn get_nullifiers_smt(&self) -> Result<HashMap<BigUint, Base>>

Fetch the Money nullifiers SMT from the wallet, as a map.

Source

async fn parse_money_call( &self, call_idx: usize, calls: &[DarkLeaf<ContractCall>], ) -> Result<(Vec<Nullifier>, Vec<Coin>, Vec<AeadEncryptedNote>, Vec<TokenId>)>

Auxiliary function to grab all the nullifiers, coins, notes and freezes from a transaction money call.

Source

pub async fn apply_tx_money_data( &self, call_idx: usize, calls: &[DarkLeaf<ContractCall>], tx_hash: &String, ) -> Result<bool>

Append data related to Money contract transactions into the wallet database, and store their inverse queries into the cache. Returns a flag indicating if the provided data refer to our own wallet.

Source

async fn money_call_nullifiers( &self, call: &DarkLeaf<ContractCall>, ) -> Result<Vec<Nullifier>>

Auxiliary function to grab all the nullifiers from a transaction money call.

Source

pub async fn mark_tx_spend(&self, tx: &Transaction) -> Result<()>

Mark provided transaction input coins as spent.

Source

pub async fn mark_spent_coin( &self, coin: &Coin, spent_tx_hash: &String, ) -> WalletDbResult<()>

Mark a coin in the wallet as spent, and store its inverse query into the cache.

Source

pub async fn mark_spent_coins( &self, nullifiers: &[Nullifier], spent_tx_hash: &String, ) -> Result<bool>

Marks all coins in the wallet as spent, if their nullifier is in the given set. Returns a flag indicating if any of the provided nullifiers refer to our own wallet.

Source

pub fn smt_insert(&self, nullifiers: &[Nullifier]) -> Result<()>

Inserts given slice to the wallets nullifiers Sparse Merkle Tree.

Source

pub async fn reset_money_tree(&self) -> WalletDbResult<()>

Reset the Money Merkle tree in the wallet.

Source

pub fn reset_money_smt(&self) -> WalletDbResult<()>

Reset the Money nullifiers Sparse Merkle Tree in the wallet.

Source

pub fn reset_money_coins(&self) -> WalletDbResult<()>

Reset the Money coins in the wallet.

Source

pub async fn get_token(&self, input: String) -> Result<TokenId>

Retrieve token by provided string. Input string represents either an alias or a token id.

Source

pub async fn append_fee_call( &self, tx: &Transaction, money_merkle_tree: &MerkleTree, fee_pk: &ProvingKey, fee_zkbin: &ZkBinary, spent_coins: Option<&[OwnCoin]>, ) -> Result<(ContractCall, Vec<Proof>, Vec<SecretKey>)>

Create and append a Money::Fee call to a given [Transaction].

Optionally takes a set of spent coins in order not to reuse them here.

Returns the Fee call, and all necessary data and parameters related.

Source

pub async fn attach_fee(&self, tx: &mut Transaction) -> Result<()>

Create and attach the fee call to given transaction.

Source§

impl Drk

Source

pub async fn initialize_dao(&self) -> WalletDbResult<()>

Initialize wallet with tables for the DAO contract.

Source

pub async fn put_dao_trees( &self, daos_tree: &MerkleTree, proposals_tree: &MerkleTree, ) -> WalletDbResult<()>

Replace the DAO Merkle trees in the wallet.

Source

pub async fn get_dao_trees(&self) -> Result<(MerkleTree, MerkleTree)>

Fetch DAO Merkle trees from the wallet.

Source

pub async fn get_dao_trees_state_query(&self) -> Result<String>

Auxiliary function to fetch the current DAO Merkle trees state, as an update query.

Source

pub async fn get_dao_secrets(&self) -> Result<Vec<SecretKey>>

Fetch all DAO secret keys from the wallet.

Source

async fn parse_dao_record(&self, row: &[Value]) -> Result<DaoRecord>

Auxiliary function to parse a DAO_DAOS_TABLE record.

Source

pub async fn get_daos(&self) -> Result<Vec<DaoRecord>>

Fetch all known DAOs from the wallet.

Source

async fn parse_dao_proposal(&self, row: &[Value]) -> Result<ProposalRecord>

Auxiliary function to parse a proposal record row.

Source

pub async fn get_dao_proposals(&self, name: &str) -> Result<Vec<ProposalRecord>>

Fetch all known DAO proposals from the wallet given a DAO name.

Source

async fn apply_dao_mint_data( &self, new_bulla: DaoBulla, tx_hash: TransactionHash, call_index: u8, ) -> Result<bool>

Auxiliary function to apply DaoFunction::Mint call data to the wallet, and store its inverse query into the cache. Returns a flag indicating if the provided call refers to our own wallet.

Source

async fn apply_dao_propose_data( &self, params: DaoProposeParams, tx_hash: TransactionHash, call_index: u8, ) -> Result<bool>

Auxiliary function to apply DaoFunction::Propose call data to the wallet, and store its inverse query into the cache. Returns a flag indicating if the provided call refers to our own wallet.

Source

async fn apply_dao_vote_data( &self, params: DaoVoteParams, tx_hash: TransactionHash, call_index: u8, ) -> Result<bool>

Auxiliary function to apply DaoFunction::Vote call data to the wallet, and store its inverse query into the cache. Returns a flag indicating if the provided call refers to our own wallet.

Source

async fn apply_dao_exec_data( &self, params: DaoExecParams, tx_hash: TransactionHash, ) -> Result<bool>

Auxiliary function to apply DaoFunction::Exec call data to the wallet, and store its inverse query into the cache. Returns a flag indicating if the provided call refers to our own wallet.

Source

pub async fn apply_tx_dao_data( &self, data: &[u8], tx_hash: TransactionHash, call_idx: u8, ) -> Result<bool>

Append data related to DAO contract transactions into the wallet database, and store their inverse queries into the cache. Returns a flag indicating if the provided data refer to our own wallet.

Source

pub async fn confirm_dao(&self, dao: &DaoRecord) -> WalletDbResult<()>

Confirm already imported DAO metadata into the wallet, and store its inverse query into the cache. Here we just write the leaf position, tx hash, and call index. Panics if the fields are None.

Source

pub async fn put_dao_proposal(&self, proposal: &ProposalRecord) -> Result<()>

Import given DAO proposal into the wallet, and store its inverse query into the cache.

Source

pub async fn unconfirm_proposals( &self, proposals: &[ProposalRecord], ) -> WalletDbResult<()>

Unconfirm imported DAO proposals by removing the leaf position, tx hash, and call index.

Source

pub async fn put_dao_vote(&self, vote: &VoteRecord) -> WalletDbResult<()>

Import given DAO vote into the wallet, and store its inverse query into the cache.

Source

pub async fn reset_dao_trees(&self) -> WalletDbResult<()>

Reset the DAO Merkle trees in the wallet.

Source

pub async fn reset_daos(&self) -> WalletDbResult<()>

Reset confirmed DAOs in the wallet.

Source

pub async fn reset_dao_proposals(&self) -> WalletDbResult<()>

Reset all DAO proposals in the wallet.

Source

pub fn reset_dao_votes(&self) -> WalletDbResult<()>

Reset all DAO votes in the wallet.

Source

pub async fn import_dao(&self, name: &str, params: DaoParams) -> Result<()>

Import given DAO params into the wallet with a given name.

Source

pub async fn get_dao_by_bulla(&self, bulla: &DaoBulla) -> Result<DaoRecord>

Fetch a DAO given its bulla.

Source

pub async fn get_dao_by_name(&self, name: &str) -> Result<DaoRecord>

Fetch a DAO given its name.

Source

pub async fn dao_list(&self, name: &Option<String>) -> Result<()>

List DAO(s) imported in the wallet. If a name is given, just print the metadata for that specific one, if found.

Source

pub async fn dao_balance(&self, name: &str) -> Result<HashMap<String, u64>>

Fetch known unspent balances from the wallet for the given DAO name.

Source

pub async fn get_proposals(&self) -> Result<Vec<ProposalRecord>>

Fetch all known DAO proposalss from the wallet.

Source

pub async fn get_dao_proposal_by_bulla( &self, bulla: &DaoProposalBulla, ) -> Result<ProposalRecord>

Fetch a DAO proposal by its bulla.

Source

pub async fn get_dao_proposal_votes( &self, proposal: &DaoProposalBulla, ) -> Result<Vec<VoteRecord>>

Source

pub async fn dao_mint(&self, name: &str) -> Result<Transaction>

Mint a DAO on-chain.

Source

pub async fn dao_propose_transfer( &self, name: &str, duration_blockwindows: u64, amount: &str, token_id: TokenId, recipient: PublicKey, spend_hook: Option<FuncId>, user_data: Option<Base>, ) -> Result<ProposalRecord>

Create a DAO transfer proposal.

Source

pub async fn dao_transfer_proposal_tx( &self, proposal: &ProposalRecord, ) -> Result<Transaction>

Create a DAO transfer proposal transaction.

Source

pub async fn dao_vote( &self, proposal_bulla: &DaoProposalBulla, vote_option: bool, weight: Option<u64>, ) -> Result<Transaction>

Vote on a DAO proposal

Source

pub async fn dao_exec_transfer( &self, proposal: &ProposalRecord, ) -> Result<Transaction>

Execute a DAO transfer proposal.

Source§

impl Drk

Source

pub fn initialize_deployooor(&self) -> WalletDbResult<()>

Initialize wallet with tables for the Deployooor contract.

Source

pub async fn deploy_auth_keygen(&self) -> WalletDbResult<()>

Generate a new deploy authority keypair and place it into the wallet

Source

pub async fn list_deploy_auth(&self) -> Result<Vec<(i64, ContractId, bool)>>

List contract deploy authorities from the wallet

Source

async fn get_deploy_auth(&self, idx: u64) -> Result<Keypair>

Retrieve a deploy authority keypair given an index

Source

pub async fn deploy_contract( &self, deploy_auth: u64, wasm_bincode: Vec<u8>, deploy_ix: Vec<u8>, ) -> Result<Transaction>

Create a feeless contract deployment transaction.

Source

pub async fn lock_contract(&self, deploy_auth: u64) -> Result<Transaction>

Create a feeless contract redeployment lock transaction.

Source§

impl Drk

Source

pub async fn put_tx_history_record( &self, tx: &Transaction, status: &str, ) -> WalletDbResult<String>

Insert or update a Transaction history record into the wallet, with the provided status, and store its inverse query into the cache.

Source

pub async fn put_tx_history_records( &self, txs: &[&Transaction], status: &str, ) -> WalletDbResult<Vec<String>>

Insert or update a slice of [Transaction] history records into the wallet, with the provided status.

Source

pub async fn get_tx_history_record( &self, tx_hash: &str, ) -> Result<(String, String, Transaction)>

Get a transaction history record.

Source

pub fn get_txs_history(&self) -> WalletDbResult<Vec<(String, String)>>

Fetch all transactions history records, excluding bytes column.

Source

pub fn reset_tx_history(&self) -> WalletDbResult<()>

Reset the transaction history records in the wallet.

Source

pub fn remove_reverted_txs(&self) -> WalletDbResult<()>

Remove the transaction history records in the wallet that have been reverted.

Source§

impl Drk

Source

pub fn put_scanned_block_record( &self, height: u32, hash: &str, rollback_query: &str, ) -> WalletDbResult<()>

Insert a scanned block information record into the wallet.

Source

fn parse_scanned_block_record( &self, row: &[Value], ) -> WalletDbResult<(u32, String, String)>

Auxiliary function to parse a WALLET_SCANNED_BLOCKS_TABLE records.

Source

pub fn get_scanned_block_record( &self, height: u32, ) -> WalletDbResult<(u32, String, String)>

Get a scanned block information record.

Source

pub fn get_scanned_block_records( &self, ) -> WalletDbResult<Vec<(u32, String, String)>>

Fetch all scanned block information record.

Source

pub fn get_last_scanned_block(&self) -> WalletDbResult<(u32, String)>

Get the last scanned block height and hash from the wallet. If database is empty default (0, ‘-’) is returned.

Source

pub fn reset_scanned_blocks(&self) -> WalletDbResult<()>

Reset the scanned blocks information records in the wallet.

Source

pub async fn reset_to_height(&self, height: u32) -> WalletDbResult<()>

Reset state to provided block height. If genesis block height(0) was provided, perform a full reset.

Source§

impl Drk

Source

pub async fn new( wallet_path: String, wallet_pass: String, endpoint: Option<Url>, ex: Arc<Executor<'static>>, fun: bool, ) -> Result<Self>

Source

pub async fn initialize_wallet(&self) -> WalletDbResult<()>

Initialize wallet with tables for Drk.

Source

pub async fn reset(&self) -> WalletDbResult<()>

Auxiliary function to completely reset wallet state.

Source

pub async fn reset_inverse_cache(&self) -> Result<()>

Auxiliary function to reset walletdb inverse cache state. Additionally, set current trees state inverse queries. We keep the entire trees state as two distinct inverse queries, since we execute per transaction call, so we don’t have to update them on each iteration.

Source

pub fn store_inverse_cache(&self, height: u32, hash: &str) -> Result<()>

Auxiliary function to store current walletdb inverse cache in scanned blocks information for provided block height and hash. Additionally, clear walletdb inverse cache state.

Auto Trait Implementations§

§

impl Freeze for Drk

§

impl RefUnwindSafe for Drk

§

impl Send for Drk

§

impl Sync for Drk

§

impl !Unpin for Drk

§

impl UnwindSafe for Drk

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
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

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<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

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

§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Gets the layout of the type.
§

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

§

type Metadata = ()

The type for metadata in pointers and references to Self.
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, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

§

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<T> Upcastable for T
where T: Any + Send + Sync + 'static,

§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
§

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<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,