Put error at the bottom of the file
The `Error` is not interesting code, put it at the bottom of the file. Refactor only, no logic changes.
This commit is contained in:
parent
19e094788f
commit
f0d968197a
|
@ -51,45 +51,6 @@ use crate::io;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use self::MerkleBlockError::*;
|
use self::MerkleBlockError::*;
|
||||||
|
|
||||||
/// An error when verifying the merkle block.
|
|
||||||
#[derive(Clone, PartialEq, Eq, Debug)]
|
|
||||||
#[non_exhaustive]
|
|
||||||
pub enum MerkleBlockError {
|
|
||||||
/// Merkle root in the header doesn't match to the root calculated from partial merkle tree.
|
|
||||||
MerkleRootMismatch,
|
|
||||||
/// Partial merkle tree contains no transactions.
|
|
||||||
NoTransactions,
|
|
||||||
/// There are too many transactions.
|
|
||||||
TooManyTransactions,
|
|
||||||
/// General format error.
|
|
||||||
BadFormat(String),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl fmt::Display for MerkleBlockError {
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
use self::MerkleBlockError::*;
|
|
||||||
|
|
||||||
match *self {
|
|
||||||
MerkleRootMismatch => write!(f, "merkle header root doesn't match to the root calculated from the partial merkle tree"),
|
|
||||||
NoTransactions => write!(f, "partial merkle tree contains no transactions"),
|
|
||||||
TooManyTransactions => write!(f, "too many transactions"),
|
|
||||||
BadFormat(ref s) => write!(f, "general format error: {}", s),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
|
|
||||||
impl std::error::Error for MerkleBlockError {
|
|
||||||
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
|
|
||||||
use self::MerkleBlockError::*;
|
|
||||||
|
|
||||||
match *self {
|
|
||||||
MerkleRootMismatch | NoTransactions | TooManyTransactions | BadFormat(_) => None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Data structure that represents a partial merkle tree.
|
/// Data structure that represents a partial merkle tree.
|
||||||
///
|
///
|
||||||
/// It represents a subset of the txid's of a known block, in a way that
|
/// It represents a subset of the txid's of a known block, in a way that
|
||||||
|
@ -495,6 +456,45 @@ impl Decodable for MerkleBlock {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// An error when verifying the merkle block.
|
||||||
|
#[derive(Clone, PartialEq, Eq, Debug)]
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum MerkleBlockError {
|
||||||
|
/// Merkle root in the header doesn't match to the root calculated from partial merkle tree.
|
||||||
|
MerkleRootMismatch,
|
||||||
|
/// Partial merkle tree contains no transactions.
|
||||||
|
NoTransactions,
|
||||||
|
/// There are too many transactions.
|
||||||
|
TooManyTransactions,
|
||||||
|
/// General format error.
|
||||||
|
BadFormat(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for MerkleBlockError {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
use self::MerkleBlockError::*;
|
||||||
|
|
||||||
|
match *self {
|
||||||
|
MerkleRootMismatch => write!(f, "merkle header root doesn't match to the root calculated from the partial merkle tree"),
|
||||||
|
NoTransactions => write!(f, "partial merkle tree contains no transactions"),
|
||||||
|
TooManyTransactions => write!(f, "too many transactions"),
|
||||||
|
BadFormat(ref s) => write!(f, "general format error: {}", s),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
|
||||||
|
impl std::error::Error for MerkleBlockError {
|
||||||
|
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
|
||||||
|
use self::MerkleBlockError::*;
|
||||||
|
|
||||||
|
match *self {
|
||||||
|
MerkleRootMismatch | NoTransactions | TooManyTransactions | BadFormat(_) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
#[cfg(feature = "rand-std")]
|
#[cfg(feature = "rand-std")]
|
||||||
|
|
Loading…
Reference in New Issue