#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("filesystem error: {0}")]
Io(#[from] std::io::Error),
#[error("state store error: {0}")]
State(#[from] rusqlite::Error),
#[error("provider error: {0}")]
Provider(String),
#[error("configuration error: {0}")]
Config(String),
#[error("sandbox failed to start: {reason}")]
Sandbox {
reason: String,
},
#[error("refused by policy: {act} {target}{}", .rule.as_ref().map(|r| format!(" (rule {r} in layer {})", .layer.as_deref().unwrap_or("?"))).unwrap_or_default())]
Refused {
act: String,
target: String,
rule: Option<String>,
layer: Option<String>,
},
}
pub type Result<T> = std::result::Result<T, Error>;