Что означает черта X для Y как Z в макросе Substrate decl_storage? - PullRequest
0 голосов
/ 18 мая 2019

Что означает as Indices в после определения хранилища субстратов ?

decl_storage! {
    trait Store for Module<T: Trait> as Indices { ... }
}

Я прочитал раздел Расширенные черты в документации, но синтаксис для ключевого слова trait не учитывает ни один параметр, помеченный как as.

1 Ответ

0 голосов
/ 19 мая 2019

Строка trait Store for Module<T: Trait> as NAME - это макро-магия.Эта строка, как написано, не является допустимым Rust, но она преобразуется в действительный код Rust с помощью макроса decl_storage!.

В конечном итоге, as Indices делает так, чтобы Substrate генерировал псевдоним, дружественный пользователю (Indices)в метаданных субстрата для этого элемента хранилища.

Например, вы можете назвать свое хранилище как-то так:

decl_storage! {
    trait Store for Module<T: Trait> as KittyStorage {
        Value: map T::AccountId => u64;
    }
}

Это будет выглядеть в пользовательском интерфейсе Polkadot следующим образом:

enter image description here

Имя, которое вы выбираете здесь, не имеет значения, кроме как вы хотите, чтобы имя вашего хранилища отображалось во внешнем мире.

...