diff options
Diffstat (limited to 'mingling/src/program/exec/error.rs')
| -rw-r--r-- | mingling/src/program/exec/error.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/mingling/src/program/exec/error.rs b/mingling/src/program/exec/error.rs new file mode 100644 index 0000000..0523ea5 --- /dev/null +++ b/mingling/src/program/exec/error.rs @@ -0,0 +1,44 @@ +use crate::error::ChainProcessError; + +#[derive(thiserror::Error, Debug)] +pub enum ProgramExecuteError { + #[error("No Dispatcher Found")] + DispatcherNotFound, + + #[error("Other error: {0}")] + Other(String), +} + +#[derive(thiserror::Error, Debug)] +pub enum ProgramInternalExecuteError { + #[error("No Dispatcher Found")] + DispatcherNotFound, + + #[error("Other error: {0}")] + Other(String), + + #[error("IO error: {0}")] + IO(#[from] std::io::Error), +} + +impl From<ProgramInternalExecuteError> for ProgramExecuteError { + fn from(value: ProgramInternalExecuteError) -> Self { + match value { + ProgramInternalExecuteError::DispatcherNotFound => { + ProgramExecuteError::DispatcherNotFound + } + ProgramInternalExecuteError::Other(s) => ProgramExecuteError::Other(s), + ProgramInternalExecuteError::IO(e) => ProgramExecuteError::Other(format!("{}", e)), + } + } +} + +impl From<ChainProcessError> for ProgramInternalExecuteError { + fn from(value: ChainProcessError) -> Self { + match value { + ChainProcessError::Other(s) => ProgramInternalExecuteError::Other(s), + ChainProcessError::IO(error) => ProgramInternalExecuteError::IO(error), + ChainProcessError::Broken(_) => ProgramInternalExecuteError::Other(format!("Broken")), + } + } +} |
