Remove serde requirement from FRAME macros (#8628)

* Remove `serde` requirement from FRAME macros

Currently there is some implicit requirement on `serde` being present in
the `Cargo.toml` of a pallet when `GenesisConfig` is used. This pr
removes this requirement by using the serde attribute `serde(crate = "..")`.

* build a unique reexport of serde in impl_opaque_keys, by abusing paste doc concatenation

* Optimize

Co-authored-by: thiolliere <gui.thiolliere@gmail.com>
This commit is contained in:
Bastian Köcherandthiolliere authored and GitHub committed 2021-04-16 12:42:37 +02:00
1 parent 7527bd758c
commit c8136bd1df
43 files changed
+29 -128

No files matched your search

@@ -65,6 +65,7 @@ fn decl_genesis_config_and_impl_default(
let genesis_struct = &genesis_config.genesis_struct;
let genesis_impl = &genesis_config.genesis_impl;
let genesis_where_clause = &genesis_config.genesis_where_clause;
let serde_crate = format!("{}::serde", scrate);
quote!(
/// Genesis config for the module, allow to build genesis storage.
@@ -72,6 +73,7 @@ fn decl_genesis_config_and_impl_default(
#[cfg(feature = "std")]
#[serde(rename_all = "camelCase")]
#[serde(deny_unknown_fields)]
#[serde(crate = #serde_crate)]
#serde_bug_bound
pub struct GenesisConfig#genesis_struct_decl #genesis_where_clause {
#( #config_fields )*