use thiserror::Error;
use regex::Error as RegexError;
use serde_json::Error as SerdeJsonError;
use std::io::Error as IoError;
use url::ParseError as UrlParseError;
#[derive(Error, Debug)]
pub enum RswappalyzerError {
#[error("规则加载失败:{0}")]
RuleLoadError(String),
#[error("规则缓存失败:{0}")]
RuleCacheError(String),
#[error("规则解析失败:{0}")]
RuleParseError(String),
#[error("正则编译失败:{0}")]
RegexCompileError(#[from] RegexError),
#[error("编译初始化失败:{0}")]
CompilerInitError(String),
#[error("检测器未初始化")]
DetectorNotInitialized,
#[error("检测失败:{0}")]
DetectError(String),
#[error("网络请求失败:{0}")]
HttpError(#[from] reqwest::Error),
#[error("JSON解析失败:{0}")]
JsonError(#[from] SerdeJsonError),
#[error("MessagePack序列化/反序列化失败:{0}")]
MsgPackError(String),
#[error("IO操作失败:{0}")]
IoError(#[from] IoError),
#[error("URL解析失败:{0}")]
UrlError(#[from] UrlParseError),
#[error("无效输入:{0}")]
InvalidInput(String),
}
pub type RswResult<T> = Result<T, RswappalyzerError>;