From 1fac28da318f27d4747a39814f0d427b7d5cad09 Mon Sep 17 00:00:00 2001 From: Deepak Chaudhary <54492415+Aideepakchaudhary@users.noreply.github.com> Date: Mon, 24 Jun 2024 18:34:34 +0800 Subject: [PATCH] pallet-membership should implement ContainsLengthBound (#4865) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### ISSUE Link to the issue: https://github.com/paritytech/polkadot-sdk/issues/1143 Deliverables - Implement trait `ContainsLengthBound` for pallet-membership ### Test Outcomes ___ Successful tests by running `cargo test -p pallet-membership --features runtime-benchmarks` running 22 tests test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok test benchmark::bench_clear_prime ... ok test tests::add_member_works ... ok test tests::change_key_with_same_caller_as_argument_changes_nothing ... ok test tests::change_key_works ... ok test benchmark::bench_set_prime ... ok test benchmark::bench_remove_member ... ok test benchmark::bench_change_key ... ok test tests::change_key_works_that_does_not_change_order ... ok test benchmark::bench_reset_members ... ok test benchmark::bench_add_member ... ok test tests::genesis_build_panics_with_duplicate_members - should panic ... ok test benchmark::bench_swap_member ... ok test tests::query_membership_works ... ok test tests::prime_member_works ... ok test tests::test_genesis_config_builds ... ok test tests::remove_member_works ... ok test tests::migration_v4 ... ok test tests::swap_member_with_identical_arguments_changes_nothing ... ok test tests::swap_member_works_that_does_not_change_order ... ok test tests::swap_member_works ... ok test tests::reset_members_works ... ok test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Doc-tests pallet_membership running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s --------- Co-authored-by: Bastian Köcher --- prdoc/pr_4865.prdoc | 13 +++++++++++++ substrate/frame/membership/src/lib.rs | 13 ++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 prdoc/pr_4865.prdoc diff --git a/prdoc/pr_4865.prdoc b/prdoc/pr_4865.prdoc new file mode 100644 index 0000000000000..48ffd04219cf5 --- /dev/null +++ b/prdoc/pr_4865.prdoc @@ -0,0 +1,13 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: Implement trait `ContainsLengthBound` for pallet-membership + +doc: + - audience: Runtime Dev + description: | + Implement trait ContainsLengthBound for pallet membership otherwise we can't use it with pallet-tips without wrapper + +crates: + - name: pallet-membership + bump: minor diff --git a/substrate/frame/membership/src/lib.rs b/substrate/frame/membership/src/lib.rs index aa6be6497eea6..8deb4fc022f37 100644 --- a/substrate/frame/membership/src/lib.rs +++ b/substrate/frame/membership/src/lib.rs @@ -24,7 +24,7 @@ #![cfg_attr(not(feature = "std"), no_std)] use frame_support::{ - traits::{ChangeMembers, Contains, Get, InitializeMembers, SortedMembers}, + traits::{ChangeMembers, Contains, ContainsLengthBound, Get, InitializeMembers, SortedMembers}, BoundedVec, }; use sp_runtime::traits::{StaticLookup, UniqueSaturatedInto}; @@ -361,6 +361,17 @@ impl, I: 'static> Contains for Pallet { } } +impl ContainsLengthBound for Pallet { + fn min_len() -> usize { + 0 + } + + /// Implementation uses a parameter type so calling is cost-free. + fn max_len() -> usize { + T::MaxMembers::get() as usize + } +} + impl, I: 'static> SortedMembers for Pallet { fn sorted_members() -> Vec { Self::members().to_vec()