aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/asset/chain
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_core/src/asset/chain')
-rw-r--r--mingling_core/src/asset/chain/error.rs29
1 files changed, 25 insertions, 4 deletions
diff --git a/mingling_core/src/asset/chain/error.rs b/mingling_core/src/asset/chain/error.rs
index e5c753d..39e4f62 100644
--- a/mingling_core/src/asset/chain/error.rs
+++ b/mingling_core/src/asset/chain/error.rs
@@ -1,12 +1,33 @@
use crate::error::ProgramInternalExecuteError;
-#[derive(thiserror::Error, Debug)]
+#[derive(Debug)]
pub enum ChainProcessError {
- #[error("Other error: {0}")]
Other(String),
+ IO(std::io::Error),
+}
+
+impl std::fmt::Display for ChainProcessError {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ ChainProcessError::Other(s) => write!(f, "Other error: {}", s),
+ ChainProcessError::IO(e) => write!(f, "IO error: {}", e),
+ }
+ }
+}
- #[error("IO error: {0}")]
- IO(#[from] std::io::Error),
+impl std::error::Error for ChainProcessError {
+ fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
+ match self {
+ ChainProcessError::IO(e) => Some(e),
+ ChainProcessError::Other(_) => None,
+ }
+ }
+}
+
+impl From<std::io::Error> for ChainProcessError {
+ fn from(e: std::io::Error) -> Self {
+ ChainProcessError::IO(e)
+ }
}
impl From<ProgramInternalExecuteError> for ChainProcessError {