//! 执行层错误类型(中文,不含密钥明文) use std::fmt; #[derive(Debug)] pub enum ExecError { /// 参数含 shell 元字符等危险输入 DangerousInput(String), /// 参数槽位白名单校验失败 InvalidSlot(String), /// 工作目录越界 CwdNotAllowed(String), /// 进程启动失败 Spawn(String), /// 非零退出码 NonZeroExit(String), } impl fmt::Display for ExecError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { ExecError::DangerousInput(m) => write!(f, "危险输入: {m}"), ExecError::InvalidSlot(m) => write!(f, "参数校验失败: {m}"), ExecError::CwdNotAllowed(m) => write!(f, "工作目录越界: {m}"), ExecError::Spawn(m) => write!(f, "进程启动失败: {m}"), ExecError::NonZeroExit(m) => write!(f, "命令非零退出: {m}"), } } } impl std::error::Error for ExecError {}