//! df-relay 错误类型 //! //! 设计:单一 RelayError 覆盖服务启动/客户端管理/广播/WS 协议四类失败, //! thiserror 派生保留错误链。脚手架阶段仅定义类型。 use thiserror::Error; /// 中继服务运行期错误 #[derive(Debug, Error)] pub enum RelayError { /// 服务启动失败(端口占用 / 绑定失败) #[error("中继服务启动失败: {0}")] Start(String), /// 客户端管理错误(配对失败 / 重复连接 / 鉴权拒绝) #[error("客户端管理错误: {0}")] Client(String), /// 广播失败(无可用连接 / 发送失败) #[error("广播失败: {0}")] Broadcast(String), /// WS 协议层错误(底层 axum::extract::ws / tungstenite) #[error("WS 协议错误: {0}")] WebSocket(String), /// 序列化/反序列化失败 #[error("消息序列化失败: {0}")] Serde(#[from] serde_json::Error), /// 广播发送失败(mpsc channel 对端已断开) #[error("广播 channel 发送失败: {0}")] Channel(String), /// 其他未归类错误(降级通道) #[error("中继内部错误: {0}")] Other(#[from] anyhow::Error), } /// 模块级 Result 别名 pub type Result = std::result::Result;