mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 00:01:09 +00:00
XCM builder pattern improvement - Accept impl Into<T> instead of just T (#3708)
The XCM builder pattern lets you build xcms like so:
```rust
let xcm = Xcm::builder()
.withdraw_asset((Parent, 100u128).into())
.buy_execution((Parent, 1u128).into())
.deposit_asset(All.into(), AccountId32 { id: [0u8; 32], network: None }.into())
.build();
```
All the `.into()` become quite annoying to have to write.
I accepted `impl Into<T>` instead of `T` in the generated methods from
the macro.
Now the previous example can be simplified as follows:
```rust
let xcm = Xcm::builder()
.withdraw_asset((Parent, 100u128))
.buy_execution((Parent, 1u128))
.deposit_asset(All, [0u8; 32])
.build();
```
---------
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: command-bot <>
Co-authored-by: Adrian Catangiu <adrian@parity.io>
This commit is contained in:
committed by
GitHub
parent
bcb4d137c9
commit
c130ea9939
@@ -0,0 +1,31 @@
|
||||
# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
|
||||
# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json
|
||||
|
||||
title: XCM builder pattern automatically converts instruction parameters.
|
||||
|
||||
doc:
|
||||
- audience: Runtime Dev
|
||||
description: |
|
||||
Small quality of life improvement.
|
||||
Previously, an XCM could be built like this:
|
||||
```rust
|
||||
let xcm = Xcm::builder()
|
||||
.withdraw_asset((Parent, 100u128).into())
|
||||
.buy_execution((Parent, 1u128).into())
|
||||
.deposit_asset(All.into(), AccountId32 { id: [0u8; 32], network: None }.into())
|
||||
.build();
|
||||
```
|
||||
Now, it can be built like this:
|
||||
```rust
|
||||
let xcm = Xcm::builder()
|
||||
.withdraw_asset((Parent, 100u128))
|
||||
.buy_execution((Parent, 1u128))
|
||||
.deposit_asset(All, [0u8; 32])
|
||||
.build();
|
||||
```
|
||||
|
||||
crates:
|
||||
- name: "xcm-procedural"
|
||||
bump: minor
|
||||
- name: "staging-xcm"
|
||||
bump: minor
|
||||
Reference in New Issue
Block a user