casper_types/transaction/
error.rs1use crate::InvalidDeploy;
2use core::fmt::{Display, Formatter};
3#[cfg(feature = "datasize")]
4use datasize::DataSize;
5
6#[cfg(feature = "std")]
7use serde::Serialize;
8#[cfg(feature = "std")]
9use std::error::Error as StdError;
10
11pub use crate::transaction::transaction_v1::InvalidTransactionV1;
12
13#[derive(Clone, Eq, PartialEq, Debug)]
15#[cfg_attr(feature = "std", derive(Serialize))]
16#[cfg_attr(feature = "datasize", derive(DataSize))]
17#[non_exhaustive]
18pub enum InvalidTransaction {
19 Deploy(InvalidDeploy),
21 V1(InvalidTransactionV1),
23}
24
25impl From<InvalidDeploy> for InvalidTransaction {
26 fn from(value: InvalidDeploy) -> Self {
27 Self::Deploy(value)
28 }
29}
30
31impl From<InvalidTransactionV1> for InvalidTransaction {
32 fn from(value: InvalidTransactionV1) -> Self {
33 Self::V1(value)
34 }
35}
36
37#[cfg(feature = "std")]
38impl StdError for InvalidTransaction {
39 fn source(&self) -> Option<&(dyn StdError + 'static)> {
40 match self {
41 InvalidTransaction::Deploy(deploy) => deploy.source(),
42 InvalidTransaction::V1(v1) => v1.source(),
43 }
44 }
45}
46
47impl Display for InvalidTransaction {
48 fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
49 match self {
50 InvalidTransaction::Deploy(inner) => Display::fmt(inner, f),
51 InvalidTransaction::V1(inner) => Display::fmt(inner, f),
52 }
53 }
54}