diff options
author | Thomas Voss <mail@thomasvoss.com> | 2022-11-04 11:32:07 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2022-11-04 11:37:07 +0100 |
commit | bb0f6f3a76d9e1099460fb2b3b7b41653d697898 (patch) | |
tree | d2d44ff8073bceacbbfb92814921f72fad29c035 /src/main_result.rs |
Initial commit
Diffstat (limited to 'src/main_result.rs')
-rw-r--r-- | src/main_result.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main_result.rs b/src/main_result.rs new file mode 100644 index 0000000..2d28874 --- /dev/null +++ b/src/main_result.rs @@ -0,0 +1,32 @@ +use std::{ + io::{self, Write}, + process::{ExitCode, Termination} +}; + +use super::error::Error; + +pub enum MainResult { + Success, + Failure(Error) +} + +impl Termination for MainResult { + fn report(self) -> ExitCode { + match self { + Self::Success => ExitCode::SUCCESS, + Self::Failure(e) => { + let _ = write!(io::stderr(), "{e}"); + ExitCode::FAILURE + } + } + } +} + +impl From<Result<(), Error>> for MainResult { + fn from(r: Result<(), Error>) -> Self { + match r { + Ok(()) => Self::Success, + Err(e) => Self::Failure(e) + } + } +} |