Что означает черта 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 следующим образом:
Имя, которое вы выбираете здесь, не имеет значения, кроме того, как вы хотите, чтобы имя вашего хранилища отображалось во внешнем мире.