mago_analyzer/plugin/
error.rs1use std::fmt;
4
5pub type PluginResult<T> = Result<T, PluginError>;
7
8#[derive(Debug, Clone, Eq, PartialEq, Hash, PartialOrd, Ord)]
10pub enum PluginError {
11 InitializationFailed { name: String, reason: String },
13
14 InvalidResult { plugin: String, operation: String, reason: String },
16
17 Configuration { plugin: String, reason: String },
19
20 Internal { reason: String },
22}
23
24impl fmt::Display for PluginError {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 match self {
27 PluginError::InitializationFailed { name, reason } => {
28 write!(f, "Plugin '{name}' failed to initialize: {reason}")
29 }
30 PluginError::InvalidResult { plugin, operation, reason } => {
31 write!(f, "Plugin '{plugin}' returned invalid result for '{operation}': {reason}")
32 }
33 PluginError::Configuration { plugin, reason } => {
34 write!(f, "Plugin '{plugin}' configuration error: {reason}")
35 }
36 PluginError::Internal { reason } => {
37 write!(f, "Internal plugin error: {reason}")
38 }
39 }
40 }
41}
42
43impl std::error::Error for PluginError {}