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 calculate_quote(
amount_a: &Balance,
reserve_a: &Balance,
reserve_b: &Balance
) -> Result<Balance, DispatchError>
pub fn calculate_quote( amount_a: &Balance, reserve_a: &Balance, reserve_b: &Balance ) -> Result<Balance, DispatchError>
Given some amount of an asset and pair reserves, returns an equivalent amount of the other asset.
sourcepub fn calculate_optimal_deposit(
_total_supply: Balance,
reserve_a: Balance,
reserve_b: Balance,
amount_a_desired: Balance,
amount_b_desired: Balance,
amount_a_min: Balance,
amount_b_min: Balance
) -> Result<(Balance, Balance), DispatchError>
pub fn calculate_optimal_deposit( _total_supply: Balance, reserve_a: Balance, reserve_b: Balance, amount_a_desired: Balance, amount_b_desired: Balance, amount_a_min: Balance, amount_b_min: Balance ) -> Result<(Balance, Balance), DispatchError>
Calculate optimal deposit using pool reserves and desired value. Pool reserves used to calculate it and quote, so important that information about pool reserves is used. Only one side is corrected, better is selected.
sourcepub fn calc_deposit_liquidity_1(
total_supply: Balance,
reserve_a: Balance,
reserve_b: Balance,
amount_a_desired: Balance,
amount_b_desired: Balance,
amount_a_min: Balance,
amount_b_min: Balance
) -> Result<(Balance, Balance, Balance), DispatchError>
pub fn calc_deposit_liquidity_1( total_supply: Balance, reserve_a: Balance, reserve_b: Balance, amount_a_desired: Balance, amount_b_desired: Balance, amount_a_min: Balance, amount_b_min: Balance ) -> Result<(Balance, Balance, Balance), DispatchError>
Additional function to calculate deposit liquidity, that using total_supply to calculate amount of pool tokens (liquidity markers).
sourcepub fn calc_output_for_exact_input(
fee_fraction: Fixed,
get_fee_from_destination: bool,
x: &Balance,
y: &Balance,
x_in: &Balance,
deduce_fee: bool
) -> Result<(Balance, Balance), DispatchError>
pub fn calc_output_for_exact_input( fee_fraction: Fixed, get_fee_from_destination: bool, x: &Balance, y: &Balance, x_in: &Balance, deduce_fee: bool ) -> Result<(Balance, Balance), DispatchError>
Calulate (y_output,fee) pair where fee can be fee_of_y1 or fee_of_x_in, and output is without fee.
sourcepub fn calc_input_for_exact_output(
fee_fraction: Fixed,
get_fee_from_destination: bool,
x: &Balance,
y: &Balance,
y_out: &Balance,
deduce_fee: bool
) -> Result<(Balance, Balance), DispatchError>
pub fn calc_input_for_exact_output( fee_fraction: Fixed, get_fee_from_destination: bool, x: &Balance, y: &Balance, y_out: &Balance, deduce_fee: bool ) -> Result<(Balance, Balance), DispatchError>
Calulate (x_input,fee) pair where fee can be fee_of_y1 or fee_of_x_in, and input is without fee.
pub fn get_base_asset_part_from_pool_account( pool_acc: &T::AccountId, trading_pair: &TradingPair<AssetIdOf<T>>, liq_amount: Balance ) -> Result<Balance, DispatchError>
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
pub fn decide_is_fee_from_destination( base_asset_id: &<T as Config>::AssetId, asset_a: &<T as Config>::AssetId, asset_b: &<T as Config>::AssetId ) -> Result<bool, DispatchError>
pub fn get_fee_account( tech_acc: &<T as Config>::TechAccountId ) -> Result<<T as Config>::TechAccountId, DispatchError>
pub fn is_fee_account_valid_for( _asset_id: <T as Config>::AssetId, tech_acc: &<T as Config>::TechAccountId, fee_acc: &<T as Config>::TechAccountId ) -> DispatchResult
pub fn is_pool_account_valid_for( _asset_id: <T as Config>::AssetId, tech_acc: &<T as Config>::TechAccountId ) -> DispatchResult
pub fn tech_account_from_dex_and_asset_pair( dex_id: T::DEXId, asset_a: T::AssetId, asset_b: T::AssetId ) -> Result<(TradingPair<<T as Config>::TechAssetId>, <T as Config>::TechAccountId), DispatchError>
pub fn ensure_trading_pair_is_not_restricted( tpair: &TradingPair<T::AssetId> ) -> Result<(), DispatchError>
pub fn get_bounds_from_swap_amount( swap_amount: SwapAmount<Balance> ) -> Result<(Bounds<Balance>, Bounds<Balance>), DispatchError>
pub fn burn( pool_account: &AccountIdOf<T>, user_account: &AccountIdOf<T>, pool_tokens: Balance ) -> Result<(), DispatchError>
pub fn mint( pool_account: &AccountIdOf<T>, user_account: &AccountIdOf<T>, pool_tokens: Balance ) -> Result<(), DispatchError>
sourcepub fn strict_sort_pair(
base_asset_id: &T::AssetId,
asset_a: &T::AssetId,
asset_b: &T::AssetId
) -> Result<TradingPair<T::AssetId>, DispatchError>
pub fn strict_sort_pair( base_asset_id: &T::AssetId, asset_a: &T::AssetId, asset_b: &T::AssetId ) -> Result<TradingPair<T::AssetId>, DispatchError>
Sort assets into base and target assets of trading pair, if none of assets is base then return error.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
pub fn deposit_liquidity( origin: OriginFor<T>, dex_id: <T as Config>::DEXId, input_asset_a: <T as Config>::AssetId, input_asset_b: <T as Config>::AssetId, input_a_desired: Balance, input_b_desired: Balance, input_a_min: Balance, input_b_min: Balance ) -> DispatchResultWithPostInfo
pub fn withdraw_liquidity( origin: OriginFor<T>, dex_id: <T as Config>::DEXId, output_asset_a: <T as Config>::AssetId, output_asset_b: <T as Config>::AssetId, marker_asset_desired: Balance, output_a_min: Balance, output_b_min: Balance ) -> DispatchResultWithPostInfo
pub fn initialize_pool( origin: OriginFor<T>, dex_id: <T as Config>::DEXId, asset_a: <T as Config>::AssetId, asset_b: <T as Config>::AssetId ) -> DispatchResultWithPostInfo
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn reserves<KArg1, KArg2>(k1: KArg1, k2: KArg2) -> (Balance, Balance)where
KArg1: EncodeLike<T::AssetId>,
KArg2: EncodeLike<T::AssetId>,
pub fn reserves<KArg1, KArg2>(k1: KArg1, k2: KArg2) -> (Balance, Balance)where KArg1: EncodeLike<T::AssetId>, KArg2: EncodeLike<T::AssetId>,
Updated after last liquidity change operation. [Base Asset Id (XOR) -> Target Asset Id => (Base Balance, Target Balance)]. This storage records is not used as source of information, but used as quick cache for information that comes from balances for assets from technical accounts. For example, communication with technical accounts and their storage is not needed, and this pair to balance cache can be used quickly.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn pool_providers<KArg1, KArg2>(k1: KArg1, k2: KArg2) -> Option<Balance>where
KArg1: EncodeLike<AccountIdOf<T>>,
KArg2: EncodeLike<AccountIdOf<T>>,
pub fn pool_providers<KArg1, KArg2>(k1: KArg1, k2: KArg2) -> Option<Balance>where KArg1: EncodeLike<AccountIdOf<T>>, KArg2: EncodeLike<AccountIdOf<T>>,
Liquidity providers of particular pool. Pool account => Liquidity provider account => Pool token balance
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn account_pools<KArg1, KArg2>(
k1: KArg1,
k2: KArg2
) -> BTreeSet<<T as Config>::AssetId>where
KArg1: EncodeLike<AccountIdOf<T>>,
KArg2: EncodeLike<<T as Config>::AssetId>,
pub fn account_pools<KArg1, KArg2>( k1: KArg1, k2: KArg2 ) -> BTreeSet<<T as Config>::AssetId>where KArg1: EncodeLike<AccountIdOf<T>>, KArg2: EncodeLike<<T as Config>::AssetId>,
Set of pools in which accounts have some share. Liquidity provider account => Target Asset of pair (assuming base asset is XOR)
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn properties<KArg1, KArg2>(
k1: KArg1,
k2: KArg2
) -> Option<(T::AccountId, T::AccountId)>where
KArg1: EncodeLike<T::AssetId>,
KArg2: EncodeLike<T::AssetId>,
pub fn properties<KArg1, KArg2>( k1: KArg1, k2: KArg2 ) -> Option<(T::AccountId, T::AccountId)>where KArg1: EncodeLike<T::AssetId>, KArg2: EncodeLike<T::AssetId>,
Properties of particular pool. Base Asset => Target Asset => (Reserves Account Id, Fees Account Id)
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
pub fn initialize_pool_unchecked( _source: <T as Config>::AccountId, dex_id: <T as Config>::DEXId, asset_a: <T as Config>::AssetId, asset_b: <T as Config>::AssetId ) -> Result<(TradingPair<<T as Config>::TechAssetId>, <T as Config>::TechAccountId, <T as Config>::TechAccountId), DispatchError>
pub fn deposit_liquidity_unchecked( source: <T as Config>::AccountId, dex_id: <T as Config>::DEXId, input_asset_a: <T as Config>::AssetId, input_asset_b: <T as Config>::AssetId, input_a_desired: Balance, input_b_desired: Balance, input_a_min: Balance, input_b_min: Balance ) -> DispatchResult
pub fn get_pool_trading_pair( pool_account: &T::AccountId ) -> Result<TradingPair<T::AssetId>, DispatchError>
Trait Implementations§
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_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> 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_initialize(_n: BlockNumber) -> Weight
fn on_initialize(_n: BlockNumber) -> 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,
swap_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, swap_amount: SwapAmount<Balance> ) -> Result<(SwapOutcome<Balance>, Weight), DispatchError>
source§fn check_rewards(
_target_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( _target_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> PoolXykPallet<<T as Config>::AccountId, <T as Config>::AssetId> for Pallet<T>
impl<T: Config> PoolXykPallet<<T as Config>::AccountId, <T as Config>::AssetId> for Pallet<T>
type PoolProvidersOutput = PrefixIterator<(<T as Config>::AccountId, u128), ()>
type PoolPropertiesOutput = PrefixIterator<(<T as Config>::AssetId, <T as Config>::AssetId, (<T as Config>::AccountId, <T as Config>::AccountId)), ()>
fn pool_providers(pool_account: &T::AccountId) -> Self::PoolProvidersOutput
fn total_issuance(pool_account: &T::AccountId) -> Result<Balance, DispatchError>
fn all_properties() -> Self::PoolPropertiesOutput
fn properties_of_pool( base_asset_id: T::AssetId, target_asset_id: T::AssetId ) -> Option<(T::AccountId, T::AccountId)>
fn balance_of_pool_provider( pool_account: T::AccountId, liquidity_provider_account: T::AccountId ) -> Option<Balance>
fn transfer_lp_tokens( pool_account: T::AccountId, asset_a: T::AssetId, asset_b: T::AssetId, base_account_id: T::AccountId, target_account_id: T::AccountId, pool_tokens: Balance ) -> Result<(), DispatchError>
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
.