Преобразование Enum RawEvent в связанный тип события в deposit_event - PullRequest
0 голосов
/ 20 марта 2020

Я хотел бы использовать метод deposit_event_indexed в модуле, но столкнулся с проблемой.

Основываясь на этом ответе , я хотел бы внести MyEvent с дженериками.

system::Module::<T>::deposit_event_indexed(&[eventHash], RawEvent::MyEvent(id, time).into());

Однако я не могу преобразовать перечисление RawEvent в Тип события, как это делается здесь из-за этой ошибки:

the trait `std::convert::From<RawEvent<_, <T as pallet_timestamp::Trait>::Moment>>` is not implemented for `frame_system::Event`

EDITED

Извините, моя ошибка, я должен был создать :: Event из Enum RawEvent, а затем в :: Event

1 Ответ

0 голосов
/ 30 марта 2020

Для использования

pub fn deposit_event_indexed(topics: &[T::Hash], event: T::Event) { ... }

Второй аргумент типа frame_system::Trait::Event

В модуле Trait::Event реализована черта into() для преобразования в frame_system::Trait::Event

Поэтому сначала мы конвертируем RawEvent в Trait::Event

let event = <T as Trait>::Event::from(RawEvent::MyEvent(id, time));
system::Module::<T>::deposit_event_indexed(&[event_hash], event.into());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...