From 309a1f76f8a33ffa443690cb54d91ac8ef985aa7 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Mon, 28 Aug 2023 17:50:09 +0300 Subject: [PATCH] Relax genesis config to not require `Default` impl --- substrate/frame/support/src/genesis_builder_helper.rs | 5 ++++- substrate/frame/support/src/traits/hooks.rs | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/substrate/frame/support/src/genesis_builder_helper.rs b/substrate/frame/support/src/genesis_builder_helper.rs index d4144a4d9fd1..b2594d183ec5 100644 --- a/substrate/frame/support/src/genesis_builder_helper.rs +++ b/substrate/frame/support/src/genesis_builder_helper.rs @@ -25,7 +25,10 @@ use sp_runtime::format_runtime_string; /// Get the default `GenesisConfig` as a JSON blob. For more info refer to /// [`sp_genesis_builder::GenesisBuilder::create_default_config`] -pub fn create_default_config() -> sp_std::vec::Vec { +pub fn create_default_config() -> sp_std::vec::Vec +where + GC: BuildGenesisConfig + Default, +{ serde_json::to_string(&GC::default()) .expect("serialization to json is expected to work. qed.") .into_bytes() diff --git a/substrate/frame/support/src/traits/hooks.rs b/substrate/frame/support/src/traits/hooks.rs index 6163c048e75d..4453a3fb7553 100644 --- a/substrate/frame/support/src/traits/hooks.rs +++ b/substrate/frame/support/src/traits/hooks.rs @@ -442,7 +442,7 @@ pub trait Hooks { /// A trait to define the build function of a genesis config for both runtime and pallets. /// /// Replaces deprecated [`GenesisBuild`]. -pub trait BuildGenesisConfig: Default + sp_runtime::traits::MaybeSerializeDeserialize { +pub trait BuildGenesisConfig: sp_runtime::traits::MaybeSerializeDeserialize { /// The build function puts initial `GenesisConfig` keys/values pairs into the storage. fn build(&self); } @@ -452,7 +452,7 @@ pub trait BuildGenesisConfig: Default + sp_runtime::traits::MaybeSerializeDeseri #[deprecated( note = "GenesisBuild is planned to be removed in December 2023. Use BuildGenesisConfig instead of it." )] -pub trait GenesisBuild: Default + sp_runtime::traits::MaybeSerializeDeserialize { +pub trait GenesisBuild: sp_runtime::traits::MaybeSerializeDeserialize { /// The build function is called within an externalities allowing storage APIs. /// Thus one can write to storage using regular pallet storages. fn build(&self);