Add BoundedBTreeMap to frame_support::storage (#8745)

* Add `BoundedBTreeMap` to `frame_support::storage`

Part of https://github.com/paritytech/substrate/issues/8719.

* max_encoded_len will never encode length > bound

* requiring users to maintain an unchecked invariant is unsafe

* only impl debug when std

* add some marker traits

* add tests
This commit is contained in:
Peter Goodspeed-Niklaus
2021-05-06 15:54:13 +02:00
committed by GitHub
parent 221aa2b865
commit db69eb04bb
3 changed files with 431 additions and 15 deletions
@@ -29,6 +29,7 @@ pub use sp_runtime::TransactionOutcome;
pub mod unhashed;
pub mod hashed;
pub mod bounded_btree_map;
pub mod bounded_vec;
pub mod child;
#[doc(hidden)]
@@ -817,6 +818,7 @@ mod private {
impl<T: Encode> Sealed for Vec<T> {}
impl<Hash: Encode> Sealed for Digest<Hash> {}
impl<T: BoundedVecValue, S: Get<u32>> Sealed for BoundedVec<T, S> {}
impl<K, V, S> Sealed for bounded_btree_map::BoundedBTreeMap<K, V, S> {}
}
impl<T: Encode> StorageAppend<T> for Vec<T> {}