Skip to main content

AssetsInHolding

Struct AssetsInHolding 

Source
pub struct AssetsInHolding {
    pub fungible: BTreeMap<AssetId, Box<dyn ImbalanceAccounting<u128>>>,
    pub non_fungible: BTreeSet<(AssetId, AssetInstance)>,
}
Expand description

Map of non-wildcard fungible and non-fungible assets held in the holding register.

Fields§

§fungible: BTreeMap<AssetId, Box<dyn ImbalanceAccounting<u128>>>

The fungible assets.

§non_fungible: BTreeSet<(AssetId, AssetInstance)>

The non-fungible assets.

Implementations§

Source§

impl AssetsInHolding

Source

pub fn new() -> Self

New value, containing no assets.

Source

pub fn new_from_fungible_credit( asset: AssetId, credit: Box<dyn ImbalanceAccounting<u128>>, ) -> Self

New holding containing a single fungible imbalance.

Source

pub fn new_from_non_fungible(class: AssetId, instance: AssetInstance) -> Self

New holding containing a single non fungible.

Source

pub fn len(&self) -> usize

Total number of distinct assets.

Source

pub fn is_empty(&self) -> bool

Returns true if self contains no assets.

Source

pub fn fungible_assets_iter(&self) -> impl Iterator<Item = Asset> + '_

A borrowing iterator over the fungible assets.

Source

pub fn non_fungible_assets_iter(&self) -> impl Iterator<Item = Asset> + '_

A borrowing iterator over the non-fungible assets.

Source

pub fn into_assets_iter(self) -> impl Iterator<Item = Asset>

A consuming iterator over all assets.

Source

pub fn assets_iter(&self) -> impl Iterator<Item = Asset> + '_

A borrowing iterator over all assets.

Source

pub fn subsume_assets(&mut self, assets: AssetsInHolding)

Mutate self to contain all given assets, saturating if necessary.

NOTE: AssetsInHolding are always sorted

Source

pub fn swapped(&mut self, with: AssetsInHolding) -> Self

Swaps two mutable AssetsInHolding, without deinitializing either one.

Source

pub fn reanchor_and_burn_local( self, target: &Location, context: &InteriorLocation, failed_bin: &mut Self, ) -> Assets

Consume self and return Assets as assets interpreted from the perspective of a target chain. The local chain’s context is provided.

Any assets which were unable to be reanchored are introduced into failed_bin instead.

WARNING: this will drop/resolve any inner imbalances for the reanchored assets. Meant to be used in crosschain operations where the asset is consumed (imbalance dropped/resolved) locally, and a reanchored version of it is to be minted on a remote location.

Source

pub fn reanchored_assets( &self, target: &Location, context: &InteriorLocation, ) -> Assets

Return all inner assets, but interpreted from the perspective of a target chain. The local chain’s context is provided.

Warning: This method returns Assets which only contains amounts (not imbalances). The returned Assets is suitable for cross-chain messaging but does not preserve the imbalance accounting semantics of the original AssetsInHolding. Do not use the returned value for local balance operations that require imbalance tracking.

Source

pub fn contains_asset(&self, asset: &Asset) -> bool

Returns true if asset is contained within self.

Source

pub fn contains_assets(&self, assets: &Assets) -> bool

Returns true if all assets are contained within self.

Source

pub fn ensure_contains(&self, assets: &Assets) -> Result<(), TakeError>

Returns an error unless all assets are contained in self.

Source

pub fn saturating_take(&mut self, asset: AssetFilter) -> Self

Mutates self to its original value less mask and returns true iff it contains at least mask.

Returns Ok with the non-wildcard equivalence of mask taken and mutates self to its value minus mask if self contains asset, and return Err otherwise.

Source

pub fn try_take(&mut self, mask: AssetFilter) -> Result<Self, TakeError>

Mutates self to its original value less mask and returns true iff it contains at least mask.

Returns Ok with the non-wildcard equivalence of asset taken and mutates self to its value minus asset if self contains asset, and return Err otherwise.

Source

pub fn min(&self, mask: &AssetFilter) -> Assets

Return the assets in self, but (asset-wise) of no greater value than mask.

The number of unique assets which are returned will respect the count parameter in the counted wildcard variants of mask.

Example:

use staging_xcm_executor::AssetsInHolding;
use xcm::latest::prelude::*;
// Note: In real usage, AssetsInHolding is created through TransactAsset operations
// For this example, we use Assets type instead to demonstrate the min() output
let assets_i_have: Assets = vec![ (Here, 100).into(), (Junctions::from([GeneralIndex(0)]), 100).into() ].into();
let assets_they_want: AssetFilter = vec![ (Here, 200).into(), (Junctions::from([GeneralIndex(0)]), 50).into() ].into();

// Normally you would call this on AssetsInHolding, but for documentation purposes:
// let assets_we_can_trade: Assets = assets_i_have.min(&assets_they_want);
// assert_eq!(assets_we_can_trade.inner(), &vec![
// 	(Here, 100).into(), (Junctions::from([GeneralIndex(0)]), 50).into(),
// ]);
Source

pub fn unsafe_clone_for_tests(&self) -> Self

Clone this holding for testing purposes only.

This uses unsafe_clone() on the imbalance accounting trait objects, which may not maintain proper accounting invariants. Only use in tests.

Trait Implementations§

Source§

impl Debug for AssetsInHolding

Source§

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

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

impl PartialEq for AssetsInHolding

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CheckedConversion for T

Source§

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

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

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

impl<T, U> DefensiveTruncateInto<U> for T

Source§

fn defensive_truncate_into(self) -> U

Defensively truncate a value and convert it into its bounded form.
Source§

impl<T> From<T> for T

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 T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> IntoKey<U> for T
where U: FromKey<T>,

Source§

fn into_key(self) -> U

Source§

impl<Src, Dest> IntoTuple<Dest> for Src
where Dest: FromTuple<Src>,

Source§

fn into_tuple(self) -> Dest

Source§

impl<T> IsType<T> for T

Source§

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

Cast reference.
Source§

fn into_ref(&self) -> &T

Cast reference.
Source§

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

Cast mutable reference.
Source§

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

Cast mutable reference.
Source§

impl<T> JsonSchemaMaybe for T

Source§

impl<T> MaybeDebug for T
where T: Debug,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatedConversion for T

Source§

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

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

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

Consume self to return an equivalent value of T. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryIntoKey<U> for T
where U: TryFromKey<T>,

Source§

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

Source§

fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>

Source§

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

Source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
Source§

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

Source§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
Source§

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

Source§

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