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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use utils::PathMod;
use utils::Styled;
use utils::Color;
use std::path::PathBuf;
use utils::Prog;
#[derive(Copy,Clone)]
pub enum ExitStatus {
Ok,
Error,
OptError,
ArgError,
}
pub trait Exit<T: AsRef<str>> {
fn error(&self, mesg: T, status: ExitStatus);
fn path_error(&self, mesg: T, item: PathBuf);
}
impl <T: AsRef<str>> Exit<T> for Prog {
fn error(&self, mesg: T, status: ExitStatus) {
println!("{}{} {}", self.name.paint(Color::Red), ":".paint(Color::Red),
mesg.as_ref().paint(Color::Red));
&self.exit(status);
}
fn path_error(&self, mesg: T, item: PathBuf) {
println!("{}{} {}", item.as_str().paint(Color::Red),
":".paint(Color::Red), mesg.as_ref().paint(Color::Red));
&self.exit(ExitStatus::Error);
}
}