Что означает черта X для Y, поскольку Z означает внутри макроса decl_storage Субстрата?

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

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

Я прочитал раздел Advanced Traits в документации, но синтаксис для trait Ключевое слово не учитывает любой параметр, помеченный как as,

1 ответ

Линия 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 следующим образом:

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

Другие вопросы по тегам