referrerpolicy=no-referrer-when-downgrade
xcm_simulator

Trait ExecuteXcm

pub trait ExecuteXcm<Call> {
    type Prepared: PreparedMessage;

    // Required methods
    fn prepare(
        message: Xcm<Call>,
        weight_limit: Weight,
    ) -> Result<Self::Prepared, InstructionError>;
    fn execute(
        origin: impl Into<Location>,
        pre: Self::Prepared,
        id: &mut [u8; 32],
        weight_credit: Weight,
    ) -> Outcome;
    fn charge_fees(
        location: impl Into<Location>,
        fees: Assets,
    ) -> Result<(), Error>;

    // Provided method
    fn prepare_and_execute(
        origin: impl Into<Location>,
        message: Xcm<Call>,
        id: &mut [u8; 32],
        weight_limit: Weight,
        weight_credit: Weight,
    ) -> Outcome { ... }
}
Expand description

Type of XCM message executor.

Required Associated Types§

Required Methods§

fn prepare( message: Xcm<Call>, weight_limit: Weight, ) -> Result<Self::Prepared, InstructionError>

If it fails, returns the index of the problematic instruction.

fn execute( origin: impl Into<Location>, pre: Self::Prepared, id: &mut [u8; 32], weight_credit: Weight, ) -> Outcome

fn charge_fees(location: impl Into<Location>, fees: Assets) -> Result<(), Error>

Deduct some fees to the sovereign account of the given location and place them as per the convention for fees.

Provided Methods§

fn prepare_and_execute( origin: impl Into<Location>, message: Xcm<Call>, id: &mut [u8; 32], weight_limit: Weight, weight_credit: Weight, ) -> Outcome

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl<C> ExecuteXcm<C> for ()

§

type Prepared = Weightless

§

fn prepare( _: Xcm<C>, _: Weight, ) -> Result<<() as ExecuteXcm<C>>::Prepared, InstructionError>

§

fn execute( _: impl Into<Location>, _: <() as ExecuteXcm<C>>::Prepared, _: &mut [u8; 32], _: Weight, ) -> Outcome

§

fn charge_fees( _location: impl Into<Location>, _fees: Assets, ) -> Result<(), Error>

Implementors§

§

impl<Config> ExecuteXcm<<Config as Config>::RuntimeCall> for XcmExecutor<Config>
where Config: Config,

§

type Prepared = WeighedMessage<<Config as Config>::RuntimeCall>

impl<C> ExecuteXcm<C> for MockXcmExecutor