На вкладке разработчика приложений Polkadot как вы кодируете кортеж Rust? - PullRequest
1 голос
/ 14 октября 2019

Существует несколько примеров включения пользовательских типов Rust, объявленных в модуле времени выполнения, которые могут применяться интерфейсом Polkadot Apps здесь . Однако я не уверен, как кодировать кортежи. Это также относится к любому другому лицу, планирующему использовать кортежи в своем коде и API времени выполнения для использования в polkadot-js.

Вот как это объявлено в модуле времени выполнения субстрата:

// tuple (struct)
pub type Code = u16;
pub type Type = u16;
pub struct Tuple(Code, Type);

// Complex struct using tuple
pub struct Record<T::AccountId,Tuple> {
    pub address: T::AccountId,
    pub tuple_values: Tuple,
}

// Storage
Record get(record):
        map T::AccountId => Option<Record<T::AccountId,Tuple>>;

Я предполагаю, что добавлю что-то подобное на вкладку Developer в настройках приложений Polkadot, но я не знаю, правильный ли это синтаксис для использования.

{
    "Code": "u16",
    "Type": "u16",
    "Tuple": ["Code", "Type"],
    "Record": {
        "address": "AccountId",
        "tuple_values": "Tuple"
    }
}

1 Ответ

1 голос
/ 14 октября 2019

Кортежи, структуры кортежей и именованные структуры кодируются одинаково. От https://substrate.dev/docs/en/next/conceptual/core/codec#tuples-and-structures

Серия значений фиксированного размера, каждое из которых может иметь другой, но заранее определенный и фиксированный тип. Это просто объединение каждого закодированного значения. Для структур значения называются, но это не имеет значения для кодировки (имена игнорируются - важен только порядок).

Так что в вашем случае будет работать что-то подобное:

```json
{
    "Code": "u16",
    "Type": "u16",
    "Tuple": {
        "bogus_name_1": "Code",
        "bogus_name_2": "Type"
    },
    "Record": {
        "address": "AccountId",
        "tuple_values": "Tuple"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...