From bb0f6f3a76d9e1099460fb2b3b7b41653d697898 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Fri, 4 Nov 2022 11:32:07 +0100 Subject: Initial commit --- src/main_result.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main_result.rs (limited to 'src/main_result.rs') 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> for MainResult { + fn from(r: Result<(), Error>) -> Self { + match r { + Ok(()) => Self::Success, + Err(e) => Self::Failure(e) + } + } +} -- cgit v1.2.3