Implement TryInto for outer events (#3549)

* Implement `TryInto` for outer events

* Remove invalid comment

* Fix compilation
This commit is contained in:
Bastian Köcher
2019-09-04 15:30:26 +02:00
committed by GitHub
parent c284ca2138
commit 5e4bc7c9b6
+35 -22
View File
@@ -452,31 +452,44 @@ macro_rules! impl_outer_event {
$( $module_name:ident::Event $( <$generic_param:ident> )? $( { $generic_instance:ident } )?, )*; $( $module_name:ident::Event $( <$generic_param:ident> )? $( { $generic_instance:ident } )?, )*;
) => { ) => {
$crate::paste::item! { $crate::paste::item! {
// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, PartialEq, Eq, $crate::codec::Encode, $crate::codec::Decode)]
#[derive(Clone, PartialEq, Eq, $crate::codec::Encode, $crate::codec::Decode)] #[cfg_attr(feature = "std", derive(Debug))]
#[cfg_attr(feature = "std", derive(Debug))] $(#[$attr])*
$(#[$attr])* #[allow(non_camel_case_types)]
#[allow(non_camel_case_types)] pub enum $name {
pub enum $name { system($system::Event),
system($system::Event), $(
$( [< $module_name $(_ $generic_instance )? >](
[< $module_name $(_ $generic_instance )? >]( $module_name::Event < $( $generic_param )? $(, $module_name::$generic_instance )? >
$module_name::Event < $( $generic_param )? $(, $module_name::$generic_instance )? > ),
), )*
)*
}
impl From<$system::Event> for $name {
fn from(x: $system::Event) -> Self {
$name::system(x)
} }
} impl From<$system::Event> for $name {
$( fn from(x: $system::Event) -> Self {
impl From<$module_name::Event < $( $generic_param, )? $( $module_name::$generic_instance )? >> for $name { $name::system(x)
fn from(x: $module_name::Event < $( $generic_param, )? $( $module_name::$generic_instance )? >) -> Self {
$name::[< $module_name $(_ $generic_instance )? >](x)
} }
} }
)* $(
impl From<$module_name::Event < $( $generic_param, )? $( $module_name::$generic_instance )? >> for $name {
fn from(x: $module_name::Event < $( $generic_param, )? $( $module_name::$generic_instance )? >) -> Self {
$name::[< $module_name $(_ $generic_instance )? >](x)
}
}
impl $crate::rstd::convert::TryInto<
$module_name::Event < $( $generic_param, )? $( $module_name::$generic_instance )? >
> for $name {
type Error = ();
fn try_into(self) -> $crate::rstd::result::Result<
$module_name::Event < $( $generic_param, )? $( $module_name::$generic_instance )? >, Self::Error
> {
match self {
Self::[< $module_name $(_ $generic_instance )? >](evt) => Ok(evt),
_ => Err(()),
}
}
}
)*
} }
$crate::__impl_outer_event_json_metadata!( $crate::__impl_outer_event_json_metadata!(
$runtime; $runtime;