referrerpolicy=no-referrer-when-downgrade

sp_trie/
proof_size_extension.rs

1// This file is part of Substrate.
2
3// Copyright (C) Parity Technologies (UK) Ltd.
4// SPDX-License-Identifier: Apache-2.0
5
6// Licensed under the Apache License, Version 2.0 (the "License");
7// you may not use this file except in compliance with the License.
8// You may obtain a copy of the License at
9//
10// 	http://www.apache.org/licenses/LICENSE-2.0
11//
12// Unless required by applicable law or agreed to in writing, software
13// distributed under the License is distributed on an "AS IS" BASIS,
14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15// See the License for the specific language governing permissions and
16// limitations under the License.
17
18//! Externalities extension that provides access to the current proof size
19//! of the underlying recorder.
20
21use crate::ProofSizeProvider;
22
23sp_externalities::decl_extension! {
24	/// The proof size extension to fetch the current storage proof size
25	/// in externalities.
26	pub struct ProofSizeExt(Box<dyn ProofSizeProvider + 'static + Sync + Send>);
27}
28
29impl ProofSizeExt {
30	/// Creates a new instance of [`ProofSizeExt`].
31	pub fn new<T: ProofSizeProvider + Sync + Send + 'static>(recorder: T) -> Self {
32		ProofSizeExt(Box::new(recorder))
33	}
34
35	/// Returns the storage proof size.
36	pub fn storage_proof_size(&self) -> u64 {
37		self.0.estimate_encoded_size() as _
38	}
39}