referrerpolicy=no-referrer-when-downgrade

sp_trie/
error.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
18use alloc::{boxed::Box, vec::Vec};
19
20/// Error type used for trie related errors.
21#[derive(Debug, PartialEq, Eq, Clone)]
22#[cfg_attr(feature = "std", derive(thiserror::Error))]
23pub enum Error<H> {
24	#[cfg_attr(feature = "std", error("Bad format"))]
25	BadFormat,
26	#[cfg_attr(feature = "std", error("Decoding failed: {0}"))]
27	Decode(#[cfg_attr(feature = "std", source)] codec::Error),
28	#[cfg_attr(
29		feature = "std",
30		error("Recorded key ({0:x?}) access with value as found={1}, but could not confirm with trie.")
31	)]
32	InvalidRecording(Vec<u8>, bool),
33	#[cfg_attr(feature = "std", error("Trie error: {0:?}"))]
34	TrieError(Box<trie_db::TrieError<H, Self>>),
35}
36
37impl<H> From<codec::Error> for Error<H> {
38	fn from(x: codec::Error) -> Self {
39		Error::Decode(x)
40	}
41}
42
43impl<H> From<Box<trie_db::TrieError<H, Self>>> for Error<H> {
44	fn from(x: Box<trie_db::TrieError<H, Self>>) -> Self {
45		Error::TrieError(x)
46	}
47}