diff --git a/codegen/src/api/calls.rs b/codegen/src/api/calls.rs index 9e1adc43b0..28dfe9ef9b 100644 --- a/codegen/src/api/calls.rs +++ b/codegen/src/api/calls.rs @@ -81,10 +81,15 @@ pub fn generate_calls( #struct_def #alias_mod - impl #crate_path::extrinsics::DecodeAsExtrinsic for #struct_name { + impl #struct_name { const PALLET_NAME: &'static str = #pallet_name; const CALL_NAME: &'static str = #call_name; } + impl #crate_path::extrinsics::DecodeAsExtrinsic for #struct_name { + fn is_extrinsic(pallet_name: &str, call_name: &str) -> bool { + pallet_name == Self::PALLET_NAME && call_name == Self::CALL_NAME + } + } }; let client_fn = quote! { diff --git a/codegen/src/api/events.rs b/codegen/src/api/events.rs index 2cd036463b..edb1db7b18 100644 --- a/codegen/src/api/events.rs +++ b/codegen/src/api/events.rs @@ -63,10 +63,15 @@ pub fn generate_events( #struct_def #alias_mod - impl #crate_path::events::DecodeAsEvent for #event_struct_name { + impl #event_struct_name { const PALLET_NAME: &'static str = #pallet_name; const EVENT_NAME: &'static str = #event_name; } + impl #crate_path::events::DecodeAsEvent for #event_struct_name { + fn is_event(pallet_name: &str, event_name: &str) -> bool { + pallet_name == Self::PALLET_NAME && event_name == Self::EVENT_NAME + } + } } }); diff --git a/subxt/src/events/decode_as_event.rs b/subxt/src/events/decode_as_event.rs index e8cac10296..c890ae95b3 100644 --- a/subxt/src/events/decode_as_event.rs +++ b/subxt/src/events/decode_as_event.rs @@ -4,13 +4,6 @@ use scale_decode::DecodeAsFields; /// This adds information to the type about which event it is, which enforces that /// only the correct event can be decoded into it. pub trait DecodeAsEvent: DecodeAsFields { - /// Pallet name. - const PALLET_NAME: &'static str; - /// Event name. - const EVENT_NAME: &'static str; - /// Returns true if the given pallet and event names match this event. - fn is_event(pallet: &str, event: &str) -> bool { - Self::PALLET_NAME == pallet && Self::EVENT_NAME == event - } + fn is_event(pallet: &str, event: &str) -> bool; } diff --git a/subxt/src/extrinsics/decode_as_extrinsic.rs b/subxt/src/extrinsics/decode_as_extrinsic.rs index ce2134d1c3..02f9897764 100644 --- a/subxt/src/extrinsics/decode_as_extrinsic.rs +++ b/subxt/src/extrinsics/decode_as_extrinsic.rs @@ -4,13 +4,6 @@ use scale_decode::DecodeAsFields; /// This adds information to the type about which extrinsic it is, which enforces that /// only the correct extrinsic can be decoded into it. pub trait DecodeAsExtrinsic: DecodeAsFields { - /// Pallet name. - const PALLET_NAME: &'static str; - /// Call name. - const CALL_NAME: &'static str; - /// Returns true if the given pallet and call names match this extrinsic. - fn is_extrinsic(pallet: &str, call: &str) -> bool { - Self::PALLET_NAME == pallet && Self::CALL_NAME == call - } + fn is_extrinsic(pallet: &str, call: &str) -> bool; }