признак «parity_scale_codec::Кодировать` не реализован для» std::коллекции::BTreeMap`

#substrate #polkadot

#субстрат #полькадот

Вопрос:

Вот моя структура:

 #[derive(PartialEq, Eq, PartialOrd, Ord, Default, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug))] pub struct SortitionSumTreelt;AccountIdgt; {  pub k: u128,  pub stack: Veclt;u128gt;,  pub nodes: Veclt;u128gt;,  pub ids_to_tree_indexes: BTreeMaplt;AccountId, u128gt;,  pub node_indexes_to_ids: BTreeMaplt;u128, AccountIdgt;, }  

Мое хранилище:

 #[pallet::storage] #[pallet::getter(fn sortition_sum_trees)] pub type SortitionSumTreeslt;Tgt; = StorageMaplt;_, Blake2_128Concat, Veclt;u8gt;, SortitionSumTreelt;Tgt;gt;;  

Но это дает ошибку:

эта черта parity_scale_codec::Encode не реализована для std::collections::BTreeMaplt;u128, Tgt;

Ответ №1:

Вам нужно использовать это:

 #[pallet::getter(fn sortition_sum_trees)] pub type SortitionSumTreeslt;Tgt; = StorageMaplt;  _,   Blake2_128Concat,  Veclt;u8gt;,  SortitionSumTreelt;T::AccountIdgt; gt;;  

Обязательно используйте T::Идентификатор SortitionSumTreelt;T::AccountIdgt; учетной записи .