Struct multicollateral_bonding_curve_pool::pallet::Pallet
source · pub struct Pallet<T>(_);
Expand description
The pallet implementing the on-chain logic.
Implementations§
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn initialize_pool(
origin: OriginFor<T>,
collateral_asset_id: T::AssetId
) -> DispatchResultWithPostInfo
pub fn initialize_pool( origin: OriginFor<T>, collateral_asset_id: T::AssetId ) -> DispatchResultWithPostInfo
Enable exchange path on the pool for pair BaseAsset-CollateralAsset.
sourcepub fn set_reference_asset(
origin: OriginFor<T>,
reference_asset_id: T::AssetId
) -> DispatchResultWithPostInfo
pub fn set_reference_asset( origin: OriginFor<T>, reference_asset_id: T::AssetId ) -> DispatchResultWithPostInfo
Change reference asset which is used to determine collateral assets value. Inteded to be e.g. stablecoin DAI.
sourcepub fn set_optional_reward_multiplier(
origin: OriginFor<T>,
collateral_asset_id: T::AssetId,
multiplier: Option<Fixed>
) -> DispatchResultWithPostInfo
pub fn set_optional_reward_multiplier( origin: OriginFor<T>, collateral_asset_id: T::AssetId, multiplier: Option<Fixed> ) -> DispatchResultWithPostInfo
Set multiplier which is applied to rewarded amount when depositing particular collateral assets.
None
value indicates reward without change, same as Some(1.0).
sourcepub fn set_price_bias(
origin: OriginFor<T>,
price_bias: Balance
) -> DispatchResultWithPostInfo
pub fn set_price_bias( origin: OriginFor<T>, price_bias: Balance ) -> DispatchResultWithPostInfo
Changes initial_price
used as bias in XOR-DAI(reference asset) price calculation
sourcepub fn set_price_change_config(
origin: OriginFor<T>,
price_change_rate: Balance,
price_change_step: Balance
) -> DispatchResultWithPostInfo
pub fn set_price_change_config( origin: OriginFor<T>, price_change_rate: Balance, price_change_step: Balance ) -> DispatchResultWithPostInfo
Changes price change rate and step
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn reserves_account_id() -> T::TechAccountId
pub fn reserves_account_id() -> T::TechAccountId
Technical account used to store collateral tokens.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
pub fn pending_free_reserves() -> Vec<(T::AssetId, Balance)> ⓘ
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn initial_price() -> Fixed
pub fn initial_price() -> Fixed
Buy price starting constant. This is the price users pay for new XOR.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn price_change_step() -> Fixed
pub fn price_change_step() -> Fixed
Cofficients in buy price function.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn sell_price_coefficient() -> Fixed
pub fn sell_price_coefficient() -> Fixed
Sets the sell function as a fraction of the buy function, so there is margin between the two functions.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn always_distribute_coefficient() -> Fixed
pub fn always_distribute_coefficient() -> Fixed
Coefficient which determines the fraction of input collateral token to be exchanged to XOR and be distributed to predefined accounts. Relevant for the Buy function (when a user buys new XOR).
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn distribution_accounts(
) -> DistributionAccounts<DistributionAccountData<DistributionAccount<T::AccountId, T::TechAccountId>>>
pub fn distribution_accounts( ) -> DistributionAccounts<DistributionAccountData<DistributionAccount<T::AccountId, T::TechAccountId>>>
Accounts that receive 20% buy/sell margin according to predefined proportions
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn enabled_targets() -> BTreeSet<T::AssetId>
pub fn enabled_targets() -> BTreeSet<T::AssetId>
Collateral Assets allowed to be sold by the token bonding curve
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn reference_asset_id() -> T::AssetId
pub fn reference_asset_id() -> T::AssetId
Asset that is used to compare collateral assets by value, e.g., DAI
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn total_rewards() -> Balance
pub fn total_rewards() -> Balance
Total amount of PSWAP owned by accounts
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn incentivised_currencies_num() -> u32
pub fn incentivised_currencies_num() -> u32
Number of reserve currencies selling which user will get rewards, namely all registered collaterals except PSWAP and VAL
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn incentives_account_id() -> Option<T::AccountId>
pub fn incentives_account_id() -> Option<T::AccountId>
Account which stores actual PSWAP intended for rewards
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn buy_function(
main_asset_id: &T::AssetId,
collateral_asset_id: &T::AssetId,
price_variant: PriceVariant,
delta: Fixed
) -> Result<Fixed, DispatchError>
pub fn buy_function( main_asset_id: &T::AssetId, collateral_asset_id: &T::AssetId, price_variant: PriceVariant, delta: Fixed ) -> Result<Fixed, DispatchError>
Buy function with regards to asset total supply and its change delta. It represents the amount of input collateral required from the User to receive the requested XOR amount, i.e., the price the User buys XOR at.
XOR is also referred as main asset.
Value of delta
is assumed to be either positive or negative.
For every price_change_step
tokens the price goes up by price_change_rate
.
buy_price_usd = (xor_total_supply + xor_supply_delta) / (price_change_step * price_change_rate) + initial_price_usd
sourcepub fn buy_price(
main_asset_id: &T::AssetId,
collateral_asset_id: &T::AssetId,
quantity: QuoteAmount<Balance>
) -> Result<Fixed, DispatchError>
pub fn buy_price( main_asset_id: &T::AssetId, collateral_asset_id: &T::AssetId, quantity: QuoteAmount<Balance> ) -> Result<Fixed, DispatchError>
Calculates and returns the current buy price, assuming that input is the collateral asset and output is the main asset.
To calculate price for a specific amount of assets (with desired main asset output), one needs to calculate the area of a right trapezoid.
AB
: buy_function(xor_total_supply)
CD
: buy_function(xor_total_supply + xor_supply_delta)
.. C
.. │
B .. │
│ S │
│ │
A └──────┘ D
- Amount of collateral tokens needed in USD to get
xor_supply_delta
(AD) XOR tokens
S = ((AB + CD) / 2) * AD
or
buy_price_usd = ((buy_function(xor_total_supply) + buy_function(xor_total_supply + xor_supply_delta)) / 2) * xor_supply_delta
- Amount of XOR tokens received by depositing
S
collateral tokens in USD:
Solving right trapezoid area formula with respect to xor_supply_delta
(AD),
actual square S
is known and represents collateral amount.
We have a quadratic equation:
buy_function(x) = price_change_coefficient * x + initial_price
Assume `M` = 1 / price_change_coefficient = 1 / 1337
Assume `P` = price_change_coefficient = 1337
M * AD² + 2 * AB * AD - 2 * S = 0
equation with two solutions, taking only positive one:
AD = (√((AB * 2 / M)² + 8 * S / M) - 2 * AB / M) / 2 (old formula)
AD = √(P * (AB² * P + 2 * S)) - AB * P (new formula)
or
(old)
xor_supply_delta = (√((buy_function(xor_total_supply) * 2 / price_change_coeff)²
+ 8 * buy_price_usd / price_change_coeff) - 2 * buy_function(xor_total_supply)
/ price_change_coeff) / 2
(new)
xor_supply_delta = √price_change_coefficient * √(buy_function(xor_total_supply)² * price_change_coefficient + 2 * buy_price_usd)
- buy_function(xor_total_supply) * price_change_coefficient
sourcepub fn sell_price(
main_asset_id: &T::AssetId,
collateral_asset_id: &T::AssetId,
quantity: QuoteAmount<Balance>
) -> Result<Fixed, DispatchError>
pub fn sell_price( main_asset_id: &T::AssetId, collateral_asset_id: &T::AssetId, quantity: QuoteAmount<Balance> ) -> Result<Fixed, DispatchError>
Calculates and returns the current sell price, assuming that input is the main asset and output is the collateral asset.
To calculate sell price for a specific amount of assets:
- Current reserves of collateral token are taken
- Same amount by value is assumed for main asset 2.1 Values are compared via getting prices for both main and collateral tokens with regard to another token called reference token which is set for particular pair. This should be e.g. stablecoin DAI. 2.2 Reference price for base token is taken as 80% of current bonding curve buy price. 2.3 Reference price for collateral token is taken as current market price, i.e. price for 1 token on liquidity proxy.
- Given known reserves for main and collateral, output collateral amount is calculated by applying x*y=k model resulting in curve-like dependency.
sourcepub fn sell_function(
main_asset_id: &T::AssetId,
collateral_asset_id: &T::AssetId,
delta: Fixed
) -> Result<Fixed, DispatchError>
pub fn sell_function( main_asset_id: &T::AssetId, collateral_asset_id: &T::AssetId, delta: Fixed ) -> Result<Fixed, DispatchError>
Sell function with regards to asset total supply and its change delta. It represents the amount of output collateral tokens received by User by indicating exact sold XOR amount. I.e. the price User sells at.
Value of delta
is assumed to be either positive or negative.
Sell function is sell_price_coefficient
% of buy function (see buy_function
).
sell_price = sell_price_coefficient * buy_price
sourcepub fn set_reserves_account_id(
account: T::TechAccountId
) -> Result<(), DispatchError>
pub fn set_reserves_account_id( account: T::TechAccountId ) -> Result<(), DispatchError>
Assign account id that is used to store deposited collateral tokens.
sourcepub fn set_distribution_accounts(
distribution_accounts: DistributionAccounts<DistributionAccountData<DistributionAccount<T::AccountId, T::TechAccountId>>>
)
pub fn set_distribution_accounts( distribution_accounts: DistributionAccounts<DistributionAccountData<DistributionAccount<T::AccountId, T::TechAccountId>>> )
Assign accounts list to be used for free reserves distribution in config.
sourcepub fn calculate_buy_reward(
reserves_account_id: &T::AccountId,
collateral_asset_id: &T::AssetId,
_collateral_asset_amount: Balance,
main_asset_amount: Balance
) -> Result<Balance, DispatchError>
pub fn calculate_buy_reward( reserves_account_id: &T::AccountId, collateral_asset_id: &T::AssetId, _collateral_asset_amount: Balance, main_asset_amount: Balance ) -> Result<Balance, DispatchError>
Calculate amount of PSWAP rewarded for collateralizing XOR in TBC.
ideal_reserves_before = sell_function(0 to xor_total_supply_before_trade) ideal_reserves_after = sell_function(0 to xor_total_supply_after_trade) actual_reserves_before = collateral_asset_reserves * collateral_asset_usd_price actual_reserves_after = actual_reserves_before + collateral_asset_input_amount * collateral_asset_usd_price
unfunded_liabilities = (ideal_reserves_before - actual_reserves_before) a = unfunded_liabilities / ideal_reserves_before b = unfunded_liabilities / ideal_reserves_after P = initial_pswap_rewards N = enabled reserve currencies except PSWAP and VAL
reward_pswap = ((a - b) * mean(a, b) * P) / N
Trait Implementations§
source§impl<T: Config> GetMarketInfo<<T as Config>::AssetId> for Pallet<T>
impl<T: Config> GetMarketInfo<<T as Config>::AssetId> for Pallet<T>
source§fn buy_price(
base_asset: &T::AssetId,
collateral_asset: &T::AssetId
) -> Result<Fixed, DispatchError>
fn buy_price( base_asset: &T::AssetId, collateral_asset: &T::AssetId ) -> Result<Fixed, DispatchError>
target_asset
at which one can buy
a unit of the base_asset
on the primary market (e.g. from the bonding curve pool or xst).source§fn sell_price(
base_asset: &T::AssetId,
collateral_asset: &T::AssetId
) -> Result<Fixed, DispatchError>
fn sell_price( base_asset: &T::AssetId, collateral_asset: &T::AssetId ) -> Result<Fixed, DispatchError>
target_asset
at which one can sell
a unit of the base_asset
on the primary market (e.g. to the bonding curve pool or xst).source§fn enabled_target_assets() -> BTreeSet<T::AssetId>
fn enabled_target_assets() -> BTreeSet<T::AssetId>
source§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
source§fn current_storage_version() -> StorageVersion
fn current_storage_version() -> StorageVersion
source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
source§impl<T: Config> Hooks<<T as Config>::BlockNumber> for Pallet<T>
impl<T: Config> Hooks<<T as Config>::BlockNumber> for Pallet<T>
source§fn on_initialize(block_number: T::BlockNumber) -> Weight
fn on_initialize(block_number: T::BlockNumber) -> Weight
§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
§fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
on_finalize
).
Implement to have something happen using the remaining weight.
Will not fire if the remaining weight is 0.
Return the weight used, the hook will subtract it from current weight used
and pass the result to the next on_idle
hook if it exists.§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
§fn integrity_test()
fn integrity_test()
source§impl<T: Config> IntegrityTest for Pallet<T>
impl<T: Config> IntegrityTest for Pallet<T>
source§fn integrity_test()
fn integrity_test()
source§impl<T: Config> LiquiditySource<<T as Config>::DEXId, <T as Config>::AccountId, <T as Config>::AssetId, u128, DispatchError> for Pallet<T>
impl<T: Config> LiquiditySource<<T as Config>::DEXId, <T as Config>::AccountId, <T as Config>::AssetId, u128, DispatchError> for Pallet<T>
source§fn can_exchange(
dex_id: &T::DEXId,
input_asset_id: &T::AssetId,
output_asset_id: &T::AssetId
) -> bool
fn can_exchange( dex_id: &T::DEXId, input_asset_id: &T::AssetId, output_asset_id: &T::AssetId ) -> bool
source§fn quote(
dex_id: &T::DEXId,
input_asset_id: &T::AssetId,
output_asset_id: &T::AssetId,
amount: QuoteAmount<Balance>,
deduce_fee: bool
) -> Result<(SwapOutcome<Balance>, Weight), DispatchError>
fn quote( dex_id: &T::DEXId, input_asset_id: &T::AssetId, output_asset_id: &T::AssetId, amount: QuoteAmount<Balance>, deduce_fee: bool ) -> Result<(SwapOutcome<Balance>, Weight), DispatchError>
source§fn exchange(
sender: &T::AccountId,
receiver: &T::AccountId,
dex_id: &T::DEXId,
input_asset_id: &T::AssetId,
output_asset_id: &T::AssetId,
desired_amount: SwapAmount<Balance>
) -> Result<(SwapOutcome<Balance>, Weight), DispatchError>
fn exchange( sender: &T::AccountId, receiver: &T::AccountId, dex_id: &T::DEXId, input_asset_id: &T::AssetId, output_asset_id: &T::AssetId, desired_amount: SwapAmount<Balance> ) -> Result<(SwapOutcome<Balance>, Weight), DispatchError>
source§fn check_rewards(
dex_id: &T::DEXId,
input_asset_id: &T::AssetId,
output_asset_id: &T::AssetId,
input_amount: Balance,
output_amount: Balance
) -> Result<(Vec<(Balance, T::AssetId, RewardReason)>, Weight), DispatchError>
fn check_rewards( dex_id: &T::DEXId, input_asset_id: &T::AssetId, output_asset_id: &T::AssetId, input_amount: Balance, output_amount: Balance ) -> Result<(Vec<(Balance, T::AssetId, RewardReason)>, Weight), DispatchError>
source§fn quote_without_impact(
dex_id: &T::DEXId,
input_asset_id: &T::AssetId,
output_asset_id: &T::AssetId,
amount: QuoteAmount<Balance>,
deduce_fee: bool
) -> Result<SwapOutcome<Balance>, DispatchError>
fn quote_without_impact( dex_id: &T::DEXId, input_asset_id: &T::AssetId, output_asset_id: &T::AssetId, amount: QuoteAmount<Balance>, deduce_fee: bool ) -> Result<SwapOutcome<Balance>, DispatchError>
source§fn quote_weight() -> Weight
fn quote_weight() -> Weight
source§fn exchange_weight() -> Weight
fn exchange_weight() -> Weight
source§fn check_rewards_weight() -> Weight
fn check_rewards_weight() -> Weight
source§impl<T: Config> OffchainWorker<<T as Config>::BlockNumber> for Pallet<T>
impl<T: Config> OffchainWorker<<T as Config>::BlockNumber> for Pallet<T>
source§fn offchain_worker(n: <T as Config>::BlockNumber)
fn offchain_worker(n: <T as Config>::BlockNumber)
source§impl<T: Config> OnFinalize<<T as Config>::BlockNumber> for Pallet<T>
impl<T: Config> OnFinalize<<T as Config>::BlockNumber> for Pallet<T>
source§fn on_finalize(n: <T as Config>::BlockNumber)
fn on_finalize(n: <T as Config>::BlockNumber)
source§impl<T: Config> OnGenesis for Pallet<T>
impl<T: Config> OnGenesis for Pallet<T>
source§fn on_genesis()
fn on_genesis()
source§impl<T: Config> OnIdle<<T as Config>::BlockNumber> for Pallet<T>
impl<T: Config> OnIdle<<T as Config>::BlockNumber> for Pallet<T>
source§fn on_idle(n: <T as Config>::BlockNumber, remaining_weight: Weight) -> Weight
fn on_idle(n: <T as Config>::BlockNumber, remaining_weight: Weight) -> Weight
remaining_weight
to make sure it is high enough to allow for
your pallet’s extra computation. Read moresource§impl<T: Config> OnInitialize<<T as Config>::BlockNumber> for Pallet<T>
impl<T: Config> OnInitialize<<T as Config>::BlockNumber> for Pallet<T>
source§fn on_initialize(n: <T as Config>::BlockNumber) -> Weight
fn on_initialize(n: <T as Config>::BlockNumber) -> Weight
source§impl<T: Config> OnRuntimeUpgrade for Pallet<T>
impl<T: Config> OnRuntimeUpgrade for Pallet<T>
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
source§impl<T: Config> PalletInfoAccess for Pallet<T>
impl<T: Config> PalletInfoAccess for Pallet<T>
source§fn module_name() -> &'static str
fn module_name() -> &'static str
source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
source§impl<T> PartialEq<Pallet<T>> for Pallet<T>
impl<T> PartialEq<Pallet<T>> for Pallet<T>
source§impl<T: Config> WhitelistedStorageKeys for Pallet<T>
impl<T: Config> WhitelistedStorageKeys for Pallet<T>
source§fn whitelisted_storage_keys() -> Vec<TrackedStorageKey> ⓘ
fn whitelisted_storage_keys() -> Vec<TrackedStorageKey> ⓘ
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.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§
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where Self: TryInto<T>,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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 + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§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 Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§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,
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>
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T> PalletVersionToStorageVersionHelper for Twhere
T: GetStorageVersion + PalletInfoAccess,
impl<T> PalletVersionToStorageVersionHelper for Twhere T: GetStorageVersion + PalletInfoAccess,
§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) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§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,
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,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
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,
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,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<A> PureOrWrapped<A> for A
impl<A> PureOrWrapped<A> for A
§fn is_wrapped_regular(&self) -> bool
fn is_wrapped_regular(&self) -> bool
Regular
.§fn is_wrapped(&self) -> bool
fn is_wrapped(&self) -> bool
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
T
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
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,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
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,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
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)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.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,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.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,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.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,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.