1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
pub mod log;

use colored::Colorize;
use log::message_prefix;

pub trait PrettyError<T> {
    fn expect_p(self, message: &str) -> T;
}

impl<T, E> PrettyError<T> for Result<T, E> {
    fn expect_p(self, message: &str) -> T {
        match self {
            Ok(value) => value,
            Err(_) => {
                println!("{}{}", message_prefix(), message.red().bold());
                std::process::exit(1);
            },
        }
    }
}

impl<T> PrettyError<T> for Option<T> {
    fn expect_p(self, message: &str) -> T {
        match self {
            Some(value) => value,
            None => {
                println!("{}{}", message_prefix(), message.red().bold());
                std::process::exit(1);
            },
        }
    }
}