Struct pallet_lbp::pallet::Pallet
source · pub struct Pallet<T>(PhantomData<T>);
Expand description
The pallet implementing the on-chain logic.
Tuple Fields§
§0: PhantomData<T>
Implementations§
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn create_pool(
origin: OriginFor<T>,
pool_owner: T::AccountId,
asset_a: AssetId,
asset_a_amount: Balance,
asset_b: AssetId,
asset_b_amount: Balance,
initial_weight: LBPWeight,
final_weight: LBPWeight,
weight_curve: WeightCurveType,
fee: (u32, u32),
fee_collector: T::AccountId,
repay_target: Balance
) -> DispatchResult
pub fn create_pool(
origin: OriginFor<T>,
pool_owner: T::AccountId,
asset_a: AssetId,
asset_a_amount: Balance,
asset_b: AssetId,
asset_b_amount: Balance,
initial_weight: LBPWeight,
final_weight: LBPWeight,
weight_curve: WeightCurveType,
fee: (u32, u32),
fee_collector: T::AccountId,
repay_target: Balance
) -> DispatchResult
Create a new liquidity bootstrapping pool for given asset pair.
For any asset pair, only one pool can exist at a time.
The dispatch origin for this call must be T::CreatePoolOrigin
.
The pool is created with initial liquidity provided by the pool_owner
who must have
sufficient funds free.
The pool starts uninitialized and update_pool call should be called once created to set the start block.
This function should be dispatched from governing entity T::CreatePoolOrigin
Parameters:
pool_owner
: the future owner of the new pool.asset_a
: { asset_id, amount } Asset ID and initial liquidity amount.asset_b
: { asset_id, amount } Asset ID and initial liquidity amount.initial_weight
: Initial weight of the asset_a. 1_000_000 corresponding to 1% and 100_000_000 to 100% this should be higher than final weightfinal_weight
: Final weight of the asset_a. 1_000_000 corresponding to 1% and 100_000_000 to 100% this should be lower than initial weightweight_curve
: The weight function used to update the LBP weights. Currently, there is only one weight function implemented, the linear function.fee
: The trading fee charged on every trade distributed tofee_collector
.fee_collector
: The account to which trading fees will be transferred.repay_target
: The amount of tokens to repay to separate fee_collector account. Until this amount is reached, fee will be increased to 20% and taken from the pool
Emits PoolCreated
event when successful.
BEWARE: We are taking the fee from the accumulated asset. If the accumulated asset is sold to the pool, the fee cost is transferred to the pool. If its bought from the pool the buyer bears the cost. This increases the price of the sold asset on every trade. Make sure to only run this with previously illiquid assets.
sourcepub fn update_pool_data(
origin: OriginFor<T>,
pool_id: <T as Config>::AccountId,
pool_owner: Option<T::AccountId>,
start: Option<T::BlockNumber>,
end: Option<T::BlockNumber>,
initial_weight: Option<LBPWeight>,
final_weight: Option<LBPWeight>,
fee: Option<(u32, u32)>,
fee_collector: Option<T::AccountId>,
repay_target: Option<Balance>
) -> DispatchResult
pub fn update_pool_data(
origin: OriginFor<T>,
pool_id: <T as Config>::AccountId,
pool_owner: Option<T::AccountId>,
start: Option<T::BlockNumber>,
end: Option<T::BlockNumber>,
initial_weight: Option<LBPWeight>,
final_weight: Option<LBPWeight>,
fee: Option<(u32, u32)>,
fee_collector: Option<T::AccountId>,
repay_target: Option<Balance>
) -> DispatchResult
Update pool data of a pool.
The dispatch origin for this call must be signed by the pool owner.
The pool can be updated only if the sale has not already started.
At least one of the following optional parameters has to be specified.
Parameters:
pool_id
: The identifier of the pool to be updated.start
: The new starting time of the sale. This parameter is optional.end
: The new ending time of the sale. This parameter is optional.initial_weight
: The new initial weight. This parameter is optional.final_weight
: The new final weight. This parameter is optional.fee
: The new trading fee charged on every trade. This parameter is optional.fee_collector
: The new receiver of trading fees. This parameter is optional.
Emits PoolUpdated
event when successful.
sourcepub fn add_liquidity(
origin: OriginFor<T>,
amount_a: (AssetId, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance),
amount_b: (AssetId, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance)
) -> DispatchResult
pub fn add_liquidity(
origin: OriginFor<T>,
amount_a: (AssetId, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance),
amount_b: (AssetId, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance)
) -> DispatchResult
Add liquidity to a pool.
Assets to add has to match the pool assets. At least one amount has to be non-zero.
The dispatch origin for this call must be signed by the pool owner.
Parameters:
pool_id
: The identifier of the poolamount_a
: The identifier of the asset and the amount to add.amount_b
: The identifier of the second asset and the amount to add.
Emits LiquidityAdded
event when successful.
sourcepub fn remove_liquidity(
origin: OriginFor<T>,
pool_id: <T as Config>::AccountId
) -> DispatchResult
pub fn remove_liquidity(
origin: OriginFor<T>,
pool_id: <T as Config>::AccountId
) -> DispatchResult
Transfer all the liquidity from a pool back to the pool owner and destroy the pool. The pool data are also removed from the storage.
The pool can’t be destroyed during the sale.
The dispatch origin for this call must be signed by the pool owner.
Parameters:
amount_a
: The identifier of the asset and the amount to add.
Emits ‘LiquidityRemoved’ when successful.
sourcepub fn sell(
origin: OriginFor<T>,
asset_in: AssetId,
asset_out: AssetId,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
max_limit: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> DispatchResult
pub fn sell(
origin: OriginFor<T>,
asset_in: AssetId,
asset_out: AssetId,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
max_limit: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> DispatchResult
Trade asset_in
for asset_out
.
Executes a swap of asset_in
for asset_out
. Price is determined by the pool and is
affected by the amount and proportion of the pool assets and the weights.
Trading fee
is distributed to the fee_collector
.
Parameters:
asset_in
: The identifier of the asset being transferred from the account to the pool.asset_out
: The identifier of the asset being transferred from the pool to the account.amount
: The amount ofasset_in
max_limit
: minimum amount ofasset_out
/ amount of asset_out to be obtained from the pool in exchange forasset_in
.
Emits SellExecuted
when successful.
sourcepub fn buy(
origin: OriginFor<T>,
asset_out: AssetId,
asset_in: AssetId,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
max_limit: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> DispatchResult
pub fn buy(
origin: OriginFor<T>,
asset_out: AssetId,
asset_in: AssetId,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
max_limit: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> DispatchResult
Trade asset_in
for asset_out
.
Executes a swap of asset_in
for asset_out
. Price is determined by the pool and is
affected by the amount and the proportion of the pool assets and the weights.
Trading fee
is distributed to the fee_collector
.
Parameters:
asset_in
: The identifier of the asset being transferred from the account to the pool.asset_out
: The identifier of the asset being transferred from the pool to the account.amount
: The amount ofasset_out
.max_limit
: maximum amount ofasset_in
to be sold in exchange forasset_out
.
Emits BuyExecuted
when successful.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn pool_data<KArg>(k: KArg) -> Option<Pool<T::AccountId, T::BlockNumber>>where
KArg: EncodeLike<<T as Config>::AccountId>,
pub fn pool_data<KArg>(k: KArg) -> Option<Pool<T::AccountId, T::BlockNumber>>where
KArg: EncodeLike<<T as Config>::AccountId>,
Details of a pool.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
pub(crate) fn calculate_weights(
pool_data: &Pool<T::AccountId, T::BlockNumber>,
at: T::BlockNumber
) -> Result<(LBPWeight, LBPWeight), DispatchError>
pub(crate) fn validate_pool_data(
pool_data: &Pool<T::AccountId, T::BlockNumber>
) -> DispatchResult
pub(crate) fn get_sorted_weight(
asset_in: AssetId,
now: T::BlockNumber,
pool_data: &Pool<T::AccountId, T::BlockNumber>
) -> Result<(LBPWeight, LBPWeight), Error<T>>
sourcepub(crate) fn is_pool_running(
pool_data: &Pool<T::AccountId, T::BlockNumber>
) -> bool
pub(crate) fn is_pool_running(
pool_data: &Pool<T::AccountId, T::BlockNumber>
) -> bool
return true if now is in interval <pool.start, pool.end>
sourcepub(crate) fn has_pool_started(
pool_data: &Pool<T::AccountId, T::BlockNumber>
) -> bool
pub(crate) fn has_pool_started(
pool_data: &Pool<T::AccountId, T::BlockNumber>
) -> bool
return true if now is > pool.start and pool has been initialized
sourcepub(crate) fn collected_fees(
pool: &Pool<T::AccountId, T::BlockNumber>
) -> <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
pub(crate) fn collected_fees(
pool: &Pool<T::AccountId, T::BlockNumber>
) -> <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
returns fees collected and locked in the fee collector account note: after LBP finishes and liquidity is removed this will be 0
sourcepub(crate) fn is_repay_fee_applied(
pool: &Pool<T::AccountId, T::BlockNumber>
) -> bool
pub(crate) fn is_repay_fee_applied(
pool: &Pool<T::AccountId, T::BlockNumber>
) -> bool
repay fee is applied until repay target amount is reached
pub(crate) fn execute_trade(
transfer: &AMMTransfer<T::AccountId, AssetId, AssetPair, Balance>
) -> DispatchResult
sourcepub(crate) fn calculate_fees(
pool: &Pool<T::AccountId, T::BlockNumber>,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> Result<<<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance, DispatchError>
pub(crate) fn calculate_fees(
pool: &Pool<T::AccountId, T::BlockNumber>,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> Result<<<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance, DispatchError>
determines fee rate and applies it to the amount
pub fn pair_account_from_assets(
asset_a: AssetId,
asset_b: AssetId
) -> <T as Config>::AccountId
Trait Implementations§
source§impl<T: Config> AMM<<T as Config>::AccountId, u32, AssetPair, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance> for Pallet<T>
impl<T: Config> AMM<<T as Config>::AccountId, u32, AssetPair, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance> for Pallet<T>
source§fn get_spot_price_unchecked(
asset_a: AssetId,
asset_b: AssetId,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
fn get_spot_price_unchecked(
asset_a: AssetId,
asset_b: AssetId,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
) -> <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance
Calculate spot price for given assets and amount. This method does not modify the storage.
Provided assets must exist in the pool. Panic if an asset does not exist in the pool.
Return 0 if calculation overflows or weights calculation overflows.
source§fn get_pair_id(assets: AssetPair) -> T::AccountId
fn get_pair_id(assets: AssetPair) -> T::AccountId
source§fn get_pool_assets(pool_account_id: &T::AccountId) -> Option<Vec<AssetId>>
fn get_pool_assets(pool_account_id: &T::AccountId) -> Option<Vec<AssetId>>
source§fn validate_sell(
who: &T::AccountId,
assets: AssetPair,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
min_bought: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
_discount: bool
) -> Result<AMMTransfer<T::AccountId, AssetId, AssetPair, Balance>, DispatchError>
fn validate_sell(
who: &T::AccountId,
assets: AssetPair,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
min_bought: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
_discount: bool
) -> Result<AMMTransfer<T::AccountId, AssetId, AssetPair, Balance>, DispatchError>
source§fn execute_sell(
transfer: &AMMTransfer<T::AccountId, AssetId, AssetPair, Balance>
) -> DispatchResult
fn execute_sell(
transfer: &AMMTransfer<T::AccountId, AssetId, AssetPair, Balance>
) -> DispatchResult
source§fn validate_buy(
who: &T::AccountId,
assets: AssetPair,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
max_sold: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
_discount: bool
) -> Result<AMMTransfer<T::AccountId, AssetId, AssetPair, Balance>, DispatchError>
fn validate_buy(
who: &T::AccountId,
assets: AssetPair,
amount: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
max_sold: <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance,
_discount: bool
) -> Result<AMMTransfer<T::AccountId, AssetId, AssetPair, Balance>, DispatchError>
source§fn execute_buy(
transfer: &AMMTransfer<T::AccountId, AssetId, AssetPair, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance>
) -> DispatchResult
fn execute_buy(
transfer: &AMMTransfer<T::AccountId, AssetId, AssetPair, <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance>
) -> DispatchResult
fn get_min_trading_limit() -> Balance
fn get_min_pool_liquidity() -> Balance
fn get_max_in_ratio() -> u128
fn get_max_out_ratio() -> u128
fn get_fee(pool_account_id: &T::AccountId) -> (u32, u32)
source§impl<T> Benchmarking for Pallet<T>where
T: Config + Config,
impl<T> Benchmarking for Pallet<T>where
T: Config + Config,
source§fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata> ⓘ
fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata> ⓘ
source§fn run_benchmark(
extrinsic: &[u8],
c: &[(BenchmarkParameter, u32)],
whitelist: &[TrackedStorageKey],
verify: bool,
internal_repeats: u32
) -> Result<Vec<BenchmarkResult>, BenchmarkError>
fn run_benchmark(
extrinsic: &[u8],
c: &[(BenchmarkParameter, u32)],
whitelist: &[TrackedStorageKey],
verify: bool,
internal_repeats: u32
) -> Result<Vec<BenchmarkResult>, BenchmarkError>
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_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
source§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. Read moresource§fn on_initialize(_n: BlockNumber) -> Weight
fn on_initialize(_n: BlockNumber) -> Weight
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
source§fn try_state(_n: BlockNumber) -> Result<(), &'static str>
fn try_state(_n: BlockNumber) -> Result<(), &'static str>
source§fn pre_upgrade() -> Result<(), &'static str>
fn pre_upgrade() -> Result<(), &'static str>
source§fn post_upgrade() -> Result<(), &'static str>
fn post_upgrade() -> Result<(), &'static str>
source§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
source§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> 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§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: Config> PalletsInfoAccess for Pallet<T>
impl<T: Config> PalletsInfoAccess for Pallet<T>
source§impl<T: Config> StorageInfoTrait for Pallet<T>
impl<T: Config> StorageInfoTrait for Pallet<T>
fn storage_info() -> Vec<StorageInfo> ⓘ
source§impl<T: Config> TradeExecution<<T as Config>::Origin, <T as Config>::AccountId, u32, u128> for Pallet<T>
impl<T: Config> TradeExecution<<T as Config>::Origin, <T as Config>::AccountId, u32, u128> for Pallet<T>
type Error = DispatchError
fn calculate_sell(
pool_type: PoolType<AssetId>,
asset_in: AssetId,
asset_out: AssetId,
amount_in: Balance
) -> Result<Balance, ExecutorError<Self::Error>>
fn calculate_buy(
pool_type: PoolType<AssetId>,
asset_in: AssetId,
asset_out: AssetId,
amount_out: Balance
) -> Result<Balance, ExecutorError<Self::Error>>
fn execute_sell(
who: T::Origin,
pool_type: PoolType<AssetId>,
asset_in: AssetId,
asset_out: AssetId,
amount_in: Balance,
min_limit: Balance
) -> Result<(), ExecutorError<Self::Error>>
fn execute_buy(
who: T::Origin,
pool_type: PoolType<AssetId>,
asset_in: AssetId,
asset_out: AssetId,
amount_out: Balance,
max_limit: Balance
) -> Result<(), ExecutorError<Self::Error>>
source§impl<T: Config> TryState<<T as Config>::BlockNumber> for Pallet<T>
impl<T: Config> TryState<<T as Config>::BlockNumber> for Pallet<T>
source§fn try_state(
n: <T as Config>::BlockNumber,
_s: TryStateSelect
) -> Result<(), &'static str>
fn try_state(
n: <T as Config>::BlockNumber,
_s: TryStateSelect
) -> Result<(), &'static str>
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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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
. Read moresource§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
. Read moresource§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. Read moresource§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. Read moresource§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.source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
source§impl<U> OnRuntimeUpgradeHelpersExt for Uwhere
U: OnRuntimeUpgrade,
impl<U> OnRuntimeUpgradeHelpersExt for Uwhere
U: OnRuntimeUpgrade,
source§fn storage_key(ident: &str) -> [u8; 32]
fn storage_key(ident: &str) -> [u8; 32]
source§fn get_temp_storage<T>(at: &str) -> Option<T>where
T: Decode,
fn get_temp_storage<T>(at: &str) -> Option<T>where
T: Decode,
Self::set_temp_storage
. Read moresource§fn set_temp_storage<T>(data: T, at: &str)where
T: Encode,
fn set_temp_storage<T>(data: T, at: &str)where
T: Encode,
Self::get_temp_storage
. Read moresource§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
source§impl<T> PalletVersionToStorageVersionHelper for Twhere
T: GetStorageVersion + PalletInfoAccess,
impl<T> PalletVersionToStorageVersionHelper for Twhere
T: GetStorageVersion + PalletInfoAccess,
fn migrate(db_weight: &RuntimeDbWeight) -> Weight
source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§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 moresource§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 moresource§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,
source§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,
source§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.source§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,
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moresource§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.source§impl<T> Tap for T
impl<T> Tap for T
source§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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.source§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. Read moresource§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. Read moresource§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. Read moresource§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. Read moresource§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. Read moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.