Skip to main content

pim_core/
error.rs

1//! Common error type shared across crates.
2
3use thiserror::Error;
4
5#[derive(Error, Debug)]
6/// Cross-crate error wrapper used by higher-level components.
7pub enum PimError {
8    /// Cryptographic operation failed.
9    #[error("crypto error: {0}")]
10    Crypto(String),
11
12    /// Protocol parsing or validation failed.
13    #[error("protocol error: {0}")]
14    Protocol(String),
15
16    /// Transport-layer operation failed.
17    #[error("transport error: {0}")]
18    Transport(String),
19
20    /// Routing-layer operation failed.
21    #[error("routing error: {0}")]
22    Routing(String),
23
24    /// TUN interface operation failed.
25    #[error("tun error: {0}")]
26    Tun(String),
27
28    /// Gateway or NAT operation failed.
29    #[error("gateway error: {0}")]
30    Gateway(String),
31
32    /// Configuration parsing or validation failed.
33    #[error("config error: {0}")]
34    Config(String),
35
36    /// Filesystem or other I/O failed.
37    #[error("io error: {0}")]
38    Io(#[from] std::io::Error),
39}
40
41#[cfg(test)]
42mod tests;