xen/
error.rs

1#[derive(thiserror::Error, Debug)]
2pub enum XenError {
3    #[error(transparent)]
4    Xen(#[from] XcError),
5
6    #[error(transparent)]
7    Io(#[from] std::io::Error),
8
9    #[error("{0}")]
10    Other(&'static str),
11}
12
13#[derive(Debug)]
14pub struct XcError {
15    #[expect(unused)]
16    pub(crate) rc: i32,
17    #[expect(unused)]
18    pub(crate) code: u32,
19    pub(crate) desc: &'static str,
20    #[expect(unused)]
21    pub(crate) backtrace: std::backtrace::Backtrace,
22}
23
24impl std::error::Error for XcError {}
25
26impl std::fmt::Display for XcError {
27    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
28        write!(f, "{}", self.desc)
29    }
30}
31
32impl XcError {
33    pub fn new(rc: i32, code: u32, desc: &'static str) -> Self {
34        Self {
35            rc,
36            code,
37            desc,
38            backtrace: std::backtrace::Backtrace::capture(),
39        }
40    }
41}