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
use derive_more::{Display, From};
use std::{borrow::Cow, env, io, num};
#[derive(Debug, Display, From)]
pub enum Error {
#[display(fmt = "I/O error: {}", "_0")]
IoError(io::Error),
#[display(fmt = "Permission denied, must run as root")]
PermissionDenied,
#[display(fmt = "{}", "_0")]
UnixError(nix::Error),
#[display(fmt = "{:?}", "_0")]
Error(&'static str),
#[display(fmt = "{}", "_0")]
InvalidArgument(num::ParseIntError),
#[display(fmt = "Invalid process: {}", "_0")]
#[from(ignore)]
InvalidProcess(Cow<'static, str>),
#[display(fmt = "Missing parent declaration")]
MissingParent,
#[display(fmt = "{}", "_0")]
VarError(env::VarError),
#[display(fmt = "{}", "_0")]
JoinError(tokio::task::JoinError),
#[display(fmt = "Username '{}' for dropping privileges not found", "_0")]
UserNotFound(Cow<'static, str>),
#[display(fmt = "Failed to drop privileges ({}) - {}", "_0", "_1")]
Privdrop(&'static str, Box<dyn std::error::Error>),
#[display(fmt = "General error: {}", "_0")]
GeneralError(Box<dyn std::error::Error>),
#[display(fmt = "Lost {}, terminated", "_0")]
#[from(ignore)]
Terminated(&'static str),
}
impl std::error::Error for Error {}