Struct loans::pallet::Pallet

source ·
pub struct Pallet<T>(_);
Expand description

The Pallet struct, the main type that implements traits and standalone functions within the pallet.

Implementations§

source§

impl<T: Config> Pallet<T>

source

pub fn reward_account_id() -> T::AccountId

source§

impl<T: Config> Pallet<T>

source

pub fn accrue_interest(asset_id: <T as Config>::CurrencyId) -> DispatchResult

Accrue interest and update corresponding storage

source

pub fn get_market_status( asset_id: <T as Config>::CurrencyId ) -> Result<(Rate, Rate, Rate, Ratio, <T as Config>::Balance, <T as Config>::Balance, FixedU128), DispatchError>

source

pub fn exchange_rate_stored( asset_id: <T as Config>::CurrencyId ) -> Result<Rate, DispatchError>

Update the exchange rate according to the totalCash, totalBorrows and totalSupply. This function does not accrue interest before calculating the exchange rate. exchangeRate = (totalCash + totalBorrows - totalReserves) / totalSupply

source§

impl<T: Config> Pallet<T>

source

pub fn add_market( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, market: Market<<T as Config>::Balance> ) -> DispatchResultWithPostInfo

Creates a new lending market for a given currency. Returns Err if a market already exists for the given currency.

All provided market states must be Pending, otherwise an error will be returned.

The lend_token id specified in the Market struct has to be unique, and cannot be later reused when creating a new market.

  • asset_id: Currency to enable lending and borrowing for.
  • market: Configuration of the new lending market
source

pub fn activate_market( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId ) -> DispatchResultWithPostInfo

Activates a market. Returns Err if the market does not exist.

If the market is already active, does nothing.

  • asset_id: Currency to enable lending and borrowing for.
source

pub fn update_rate_model( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, rate_model: InterestRateModel ) -> DispatchResultWithPostInfo

Updates the rate model of a stored market. Returns Err if the market currency does not exist or the rate model is invalid.

  • asset_id: Market currency
  • rate_model: The new rate model to set
source

pub fn update_market( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, collateral_factor: Option<Ratio>, liquidation_threshold: Option<Ratio>, reserve_factor: Option<Ratio>, close_factor: Option<Ratio>, liquidate_incentive_reserved_factor: Option<Ratio>, liquidate_incentive: Option<Rate>, supply_cap: Option<<T as Config>::Balance>, borrow_cap: Option<<T as Config>::Balance> ) -> DispatchResultWithPostInfo

Updates a stored market. Returns Err if the market currency does not exist.

  • asset_id: market related currency
  • collateral_factor: the collateral utilization ratio
  • liquidation_threshold: The collateral ratio when a borrower can be liquidated
  • reserve_factor: fraction of interest set aside for reserves
  • close_factor: max percentage of debt that can be liquidated in a single transaction
  • liquidate_incentive_reserved_factor: liquidation share set aside for reserves
  • liquidate_incentive: liquidation incentive ratio
  • supply_cap: Upper bound of supplying
  • borrow_cap: Upper bound of borrowing
source

pub fn force_update_market( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, market: Market<<T as Config>::Balance> ) -> DispatchResultWithPostInfo

Force updates a stored market. Returns Err if the market currency does not exist.

  • asset_id: market related currency
  • market: Configuration of the new lending market
source

pub fn add_reward( origin: OriginFor<T>, amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

Deposit incentive reward currency into the pallet account.

  • amount: Reward amount added
source

pub fn update_market_reward_speed( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, supply_reward_per_block: Option<<T as Config>::Balance>, borrow_reward_per_block: Option<<T as Config>::Balance> ) -> DispatchResultWithPostInfo

Updates reward speed for the specified market

The origin must conform to UpdateOrigin.

  • asset_id: Market related currency
  • supply_reward_per_block: supply reward amount per block.
  • borrow_reward_per_block: borrow reward amount per block.
source

pub fn claim_reward(origin: OriginFor<T>) -> DispatchResultWithPostInfo

Claim incentive rewards for all markets.

source

pub fn claim_reward_for_market( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId ) -> DispatchResultWithPostInfo

Claim inceitve reward for the specified market.

  • asset_id: Market related currency
source

pub fn mint( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, mint_amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

The caller supplies (lends) assets into the market and receives a corresponding amount of lend tokens, at the current internal exchange rate.

  • asset_id: the asset to be deposited.
  • mint_amount: the amount to be deposited.
source

pub fn redeem( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, redeem_amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

The caller redeems lend tokens for the underlying asset, at the current internal exchange rate.

  • asset_id: the asset to be redeemed
  • redeem_amount: the amount to be redeemed, expressed in the underyling currency (asset_id)
source

pub fn redeem_all( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId ) -> DispatchResultWithPostInfo

The caller redeems their entire lend token balance in exchange for the underlying asset. Note: this will fail if the account needs some of the collateral for backing open borrows, or if any of the lend tokens are used by other pallets (e.g. used as vault collateral)

  • asset_id: the asset to be redeemed.
source

pub fn borrow( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, borrow_amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

The caller borrows borrow_amount of asset_id from the protocol, using their supplied assets as collateral.

  • asset_id: the asset to be borrowed.
  • borrow_amount: the amount to be borrowed.
source

pub fn repay_borrow( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId, repay_amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

The caller repays some of their debts.

  • asset_id: the asset to be repaid.
  • repay_amount: the amount to be repaid, in the underlying currency (asset_id).
source

pub fn repay_borrow_all( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId ) -> DispatchResultWithPostInfo

The caller repays all of their debts.

  • asset_id: the asset to be repaid.
source

pub fn deposit_all_collateral( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId ) -> DispatchResultWithPostInfo

Caller enables their lend token balance as borrow collateral. This operation locks the lend tokens, so they are no longer transferrable. Any incoming lend tokens into the caller’s account (either by direct transfer or minting) are automatically locked as well, such that locking and unlocking borrow collateral is an atomic state (a “collateral toggle”). If any of the caller’s lend token balance is locked elsewhere (for instance, as bridge vault collateral), this operation will fail. If this operation is successful, the caller’s maximum allowed debt increases.

  • asset_id: the underlying asset denoting the market whose lend tokens are to be enabled as collateral.
source

pub fn withdraw_all_collateral( origin: OriginFor<T>, asset_id: <T as Config>::CurrencyId ) -> DispatchResultWithPostInfo

Caller disables their lend token balance as borrow collateral. This operation unlocks the lend tokens, so they become transferrable. This operation can only succeed if the caller’s debt is backed by sufficient collateral excluding this currency.

  • asset_id: the underlying asset denoting the market whose lend tokens are to be disabled as collateral.
source

pub fn liquidate_borrow( origin: OriginFor<T>, borrower: T::AccountId, liquidation_asset_id: <T as Config>::CurrencyId, repay_amount: <T as Config>::Balance, collateral_asset_id: <T as Config>::CurrencyId ) -> DispatchResultWithPostInfo

The caller liquidates the borrower’s collateral. This extrinsic may need to be called multiple times to completely clear the borrower’s bad debt, because of the close_factor parameter in the market. See the close_factor_may_require_multiple_liquidations_to_clear_bad_debt unit test for an example of this.

  • borrower: the borrower to be liquidated.
  • liquidation_asset_id: the underlying asset to be liquidated.
  • repay_amount: the amount of liquidation_asset_id to be repaid. This parameter can only be as large as the close_factor market parameter allows (close_factor * borrower_debt_in_liquidation_asset).
  • collateral_asset_id: The underlying currency whose lend tokens to seize from the borrower. Note that the liquidator has to redeem the received lend tokens from the market to convert them to collateral_asset_id.
source

pub fn add_reserves( origin: OriginFor<T>, payer: <T::Lookup as StaticLookup>::Source, asset_id: <T as Config>::CurrencyId, add_amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

Add reserves by transferring from payer. TODO: This extrinsic currently does nothing useful. See the TODO comment of the ensure_enough_cash function for more details. Based on that TODO, decide whether this extrinsic should be kept.

May only be called from T::ReserveOrigin.

  • payer: the payer account.
  • asset_id: the assets to be added.
  • add_amount: the amount to be added.
source

pub fn reduce_reserves( origin: OriginFor<T>, receiver: <T::Lookup as StaticLookup>::Source, asset_id: <T as Config>::CurrencyId, reduce_amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

Reduces reserves (treasury’s share of accrued interest) by transferring to receiver.

May only be called from T::ReserveOrigin.

  • receiver: the receiver account.
  • asset_id: the assets to be reduced.
  • reduce_amount: the amount to be reduced.
source

pub fn reduce_incentive_reserves( origin: OriginFor<T>, receiver: <T::Lookup as StaticLookup>::Source, asset_id: <T as Config>::CurrencyId, redeem_amount: <T as Config>::Balance ) -> DispatchResultWithPostInfo

Sender redeems some of internal supplies in exchange for the underlying asset.

  • asset_id: the asset to be redeemed.
  • redeem_amount: the amount to be redeemed.
source§

impl<T: Config> Pallet<T>

source

pub fn last_accrued_interest_time<KArg>(k: KArg) -> Timestampwhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for LastAccruedInterestTime.

source§

impl<T: Config> Pallet<T>

source

pub fn account_borrows<KArg1, KArg2>( k1: KArg1, k2: KArg2 ) -> BorrowSnapshot<<T as Config>::Balance>where KArg1: EncodeLike<<T as Config>::CurrencyId>, KArg2: EncodeLike<T::AccountId>,

An auto-generated getter for AccountBorrows.

source§

impl<T: Config> Pallet<T>

source

pub fn borrow_index<KArg>(k: KArg) -> Ratewhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for BorrowIndex.

source§

impl<T: Config> Pallet<T>

source

pub fn exchange_rate<KArg>(k: KArg) -> Ratewhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for ExchangeRate.

source§

impl<T: Config> Pallet<T>

source

pub fn borrow_rate<KArg>(k: KArg) -> Ratewhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for BorrowRate.

source§

impl<T: Config> Pallet<T>

source

pub fn supply_rate<KArg>(k: KArg) -> Ratewhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for SupplyRate.

source§

impl<T: Config> Pallet<T>

source

pub fn utilization_ratio<KArg>(k: KArg) -> Ratiowhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for UtilizationRatio.

source§

impl<T: Config> Pallet<T>

source

pub fn reward_supply_speed<KArg>(k: KArg) -> <T as Config>::Balancewhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for RewardSupplySpeed.

source§

impl<T: Config> Pallet<T>

source

pub fn reward_borrow_speed<KArg>(k: KArg) -> <T as Config>::Balancewhere KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for RewardBorrowSpeed.

source§

impl<T: Config> Pallet<T>

source

pub fn reward_supply_state<KArg>( k: KArg ) -> RewardMarketState<BlockNumberFor<T>, <T as Config>::Balance>where KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for RewardSupplyState.

source§

impl<T: Config> Pallet<T>

source

pub fn reward_borrow_state<KArg>( k: KArg ) -> RewardMarketState<BlockNumberFor<T>, <T as Config>::Balance>where KArg: EncodeLike<<T as Config>::CurrencyId>,

An auto-generated getter for RewardBorrowState.

source§

impl<T: Config> Pallet<T>

source

pub fn reward_supplier_index<KArg1, KArg2>( k1: KArg1, k2: KArg2 ) -> <T as Config>::Balancewhere KArg1: EncodeLike<<T as Config>::CurrencyId>, KArg2: EncodeLike<T::AccountId>,

An auto-generated getter for RewardSupplierIndex.

source§

impl<T: Config> Pallet<T>

source

pub fn reward_borrower_index<KArg1, KArg2>( k1: KArg1, k2: KArg2 ) -> <T as Config>::Balancewhere KArg1: EncodeLike<<T as Config>::CurrencyId>, KArg2: EncodeLike<T::AccountId>,

An auto-generated getter for RewardBorrowerIndex.

source§

impl<T: Config> Pallet<T>

source

pub fn reward_accrued<KArg>(k: KArg) -> <T as Config>::Balancewhere KArg: EncodeLike<T::AccountId>,

An auto-generated getter for RewardAccrued.

source§

impl<T: Config> Pallet<T>

source

pub fn max_exchange_rate() -> Rate

An auto-generated getter for MaxExchangeRate.

source§

impl<T: Config> Pallet<T>

source

pub fn min_exchange_rate() -> Rate

An auto-generated getter for MinExchangeRate.

source§

impl<T: Config> Pallet<T>

source

pub fn account_deposits( lend_token_id: <T as Config>::CurrencyId, supplier: &T::AccountId ) -> Amount<T>

source

pub fn total_borrows(asset_id: <T as Config>::CurrencyId) -> Amount<T>

source

pub fn total_reserves(asset_id: <T as Config>::CurrencyId) -> Amount<T>

source

pub fn account_id() -> T::AccountId

source

pub fn get_account_liquidity( account: &T::AccountId ) -> Result<AccountLiquidity<T>, DispatchError>

source

pub fn get_account_liquidation_threshold_liquidity( account: &T::AccountId ) -> Result<AccountLiquidity<T>, DispatchError>

source

pub fn current_borrow_balance( who: &T::AccountId, asset_id: <T as Config>::CurrencyId ) -> Result<Amount<T>, DispatchError>

source

pub fn borrow_balance_from_old_and_new_index( old_index: &FixedU128, new_index: &FixedU128, amount: Amount<T>, rounding: Rounding ) -> Result<Amount<T>, DispatchError>

source

pub fn do_liquidate_borrow( liquidator: T::AccountId, borrower: T::AccountId, repayment_underlying: &Amount<T>, collateral_asset_id: <T as Config>::CurrencyId ) -> DispatchResult

Note:

  • liquidation_asset_id is borrower’s debt asset.
  • collateral_asset_id is borrower’s collateral asset.
  • repay_amount is amount of liquidation_asset_id

The liquidator will repay a certain amount of liquidation_asset_id from own account for borrower. Then the protocol will reduce borrower’s debt and liquidator will receive collateral_asset_id (as voucher amount) from borrower.

source

pub fn lock_if_account_deposited( account_id: &T::AccountId, lend_tokens: &Amount<T> ) -> DispatchResult

source

pub fn total_supply( asset_id: <T as Config>::CurrencyId ) -> Result<Amount<T>, DispatchError>

Total issuance of lending tokens (lend_tokens), given the underlying

source

pub fn free_lend_tokens( asset_id: <T as Config>::CurrencyId, account_id: &T::AccountId ) -> Result<Amount<T>, DispatchError>

Free lending tokens (lend_tokens) of an account, given the underlying

source

pub fn reserved_lend_tokens( asset_id: <T as Config>::CurrencyId, account_id: &T::AccountId ) -> Result<Amount<T>, DispatchError>

Reserved lending tokens (lend_tokens) of an account, given the underlying

source

pub fn get_asset_value(asset: &Amount<T>) -> Result<Amount<T>, DispatchError>

source

pub fn market( asset_id: <T as Config>::CurrencyId ) -> Result<Market<<T as Config>::Balance>, DispatchError>

source

pub fn lend_token_id( asset_id: <T as Config>::CurrencyId ) -> Result<<T as Config>::CurrencyId, DispatchError>

source

pub fn incentive_reward_account_id() -> T::AccountId

Trait Implementations§

source§

impl<T: Config> Callable<T> for Pallet<T>

source§

impl<T> Clone for Pallet<T>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T> Debug for Pallet<T>

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Config> GetStorageVersion for Pallet<T>

§

type CurrentStorageVersion = NoStorageVersionSet

This will be filled out by the pallet macro. Read more
source§

fn current_storage_version() -> Self::CurrentStorageVersion

Returns the current storage version as supported by the pallet.
source§

fn on_chain_storage_version() -> StorageVersion

Returns the on-chain storage version of the pallet as stored in the storage.
source§

impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

§

fn on_finalize(_n: BlockNumber)

The block is being finalized. Implement to have something happen.
§

fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight

This will be run when the block is being finalized (before on_finalize). Read more
§

fn on_initialize(_n: BlockNumber) -> Weight

The block is being initialized. Implement to have something happen. Read more
§

fn on_runtime_upgrade() -> Weight

Perform a module upgrade. Read more
§

fn offchain_worker(_n: BlockNumber)

Implementing this function on a module allows you to perform long-running tasks that make (by default) validators generate transactions that feed results of those long-running computations back on chain. Read more
§

fn integrity_test()

Run integrity test. Read more
source§

impl<T: Config> IntegrityTest for Pallet<T>

source§

fn integrity_test()

Run integrity test. Read more
source§

impl<T: Config> LoansApi<<T as Config>::CurrencyId, <T as Config>::AccountId, Amount<T>> for Pallet<T>

source§

fn do_mint( supplier: &<T as Config>::AccountId, amount: &Amount<T> ) -> Result<(), DispatchError>

source§

fn do_borrow( borrower: &<T as Config>::AccountId, borrow: &Amount<T> ) -> Result<(), DispatchError>

source§

fn do_deposit_collateral( supplier: &<T as Config>::AccountId, lend_token_amount: &Amount<T> ) -> Result<(), DispatchError>

source§

fn do_withdraw_collateral( supplier: &<T as Config>::AccountId, voucher: &Amount<T> ) -> Result<(), DispatchError>

source§

fn do_repay_borrow( borrower: &<T as Config>::AccountId, borrow: &Amount<T> ) -> Result<(), DispatchError>

source§

fn do_redeem( supplier: &<T as Config>::AccountId, underlying: &Amount<T>, voucher: &Amount<T> ) -> Result<(), DispatchError>

source§

fn recompute_underlying_amount( lend_tokens: &Amount<T> ) -> Result<Amount<T>, DispatchError>

source§

fn underlying_id( lend_token_id: <T as Config>::CurrencyId ) -> Result<<T as Config>::CurrencyId, DispatchError>

source§

fn recompute_collateral_amount( underlying: &Amount<T> ) -> Result<Amount<T>, DispatchError>

source§

impl<T: Config> LoansMarketDataProvider<<T as Config>::CurrencyId, <T as Config>::Balance> for Pallet<T>

source§

fn get_market_info( asset_id: <T as Config>::CurrencyId ) -> Result<MarketInfo, DispatchError>

source§

fn get_market_status( asset_id: <T as Config>::CurrencyId ) -> Result<MarketStatus<<T as Config>::Balance>, DispatchError>

source§

fn get_full_interest_rate(asset_id: <T as Config>::CurrencyId) -> Option<Rate>

source§

impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn offchain_worker(n: BlockNumberFor<T>)

This function is being called after every block import (when fully synced). Read more
source§

impl<T: Config> OnExchangeRateChange<<T as Config>::CurrencyId> for Pallet<T>

source§

fn on_exchange_rate_change(currency_id: &<T as Config>::CurrencyId)

source§

impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn on_finalize(n: BlockNumberFor<T>)

The block is being finalized. Implement to have something happen. Read more
source§

impl<T: Config> OnGenesis for Pallet<T>

source§

fn on_genesis()

Something that should happen at genesis.
source§

impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn on_idle(n: BlockNumberFor<T>, remaining_weight: Weight) -> Weight

The block is being finalized. Implement to have something happen in case there is leftover weight. Check the passed remaining_weight to make sure it is high enough to allow for your pallet’s extra computation. Read more
source§

impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn on_initialize(n: BlockNumberFor<T>) -> Weight

The block is being initialized. Implement to have something happen. Read more
source§

impl<T: Config> OnRuntimeUpgrade for Pallet<T>

source§

fn on_runtime_upgrade() -> Weight

Perform a module upgrade. Read more
source§

impl<T: Config> PalletInfoAccess for Pallet<T>

source§

fn index() -> usize

Index of the pallet as configured in the runtime.
source§

fn name() -> &'static str

Name of the pallet as configured in the runtime.
source§

fn module_name() -> &'static str

Name of the Rust module containing the pallet.
source§

fn crate_version() -> CrateVersion

Version of the crate containing the pallet.
source§

impl<T: Config> PalletsInfoAccess for Pallet<T>

source§

fn count() -> usize

The number of pallets’ information that this type represents. Read more
source§

fn infos() -> Vec<PalletInfoData>

All of the pallets’ information that this type represents.
source§

impl<T> PartialEq<Pallet<T>> for Pallet<T>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: Config> StorageInfoTrait for Pallet<T>

source§

fn storage_info() -> Vec<StorageInfo>

source§

impl<T: Config> WhitelistedStorageKeys for Pallet<T>

source§

fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>

Returns a Vec<TrackedStorageKey> indicating the storage keys that should be whitelisted during benchmarking. This means that those keys will be excluded from the benchmarking performance calculation.
source§

impl<T> Eq for Pallet<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for Pallet<T>where T: RefUnwindSafe,

§

impl<T> Send for Pallet<T>where T: Send,

§

impl<T> Sync for Pallet<T>where T: Sync,

§

impl<T> Unpin for Pallet<T>where T: Unpin,

§

impl<T> UnwindSafe for Pallet<T>where T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
§

impl<T> CheckedConversion for T

§

fn checked_from<T>(t: T) -> Option<Self>where Self: TryFrom<T>,

Convert from a value of T into an equivalent instance of Option<Self>. Read more
§

fn checked_into<T>(self) -> Option<T>where Self: TryInto<T>,

Consume self to return Some equivalent value of Option<T>. Read more
§

impl<T> Conv for T

§

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

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

impl<T> DynClone for Twhere T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

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

const: unstable · 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.

§

impl<T> IsType<T> for T

§

fn from_ref(t: &T) -> &T

Cast reference.
§

fn into_ref(&self) -> &T

Cast reference.
§

fn from_mut(t: &mut T) -> &mut T

Cast mutable reference.
§

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

Cast mutable reference.
§

impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

§

impl<T> Pipe for Twhere T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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 ) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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) -> Rwhere 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 ) -> Rwhere 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 = mem::align_of::<T>()

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

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<T> SaturatedConversion for T

§

fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,

Convert from a value of T into an equivalent instance of Self. Read more
§

fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,

Consume self to return an equivalent value of T. 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere 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)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,

§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
§

impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,

§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
§

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

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> JsonSchemaMaybe for T

§

impl<T> MaybeDebug for Twhere T: Debug,

§

impl<T> MaybeRefUnwindSafe for Twhere T: RefUnwindSafe,

§

impl<T> Member for Twhere T: Send + Sync + Debug + Eq + PartialEq<T> + Clone + 'static,