//! 拼图领域错误。 //! //! 错误只表达玩法规则失败,例如标签不足、移动非法或运行态不存在; //! HTTP 状态码与 SpacetimeDB 字符串错误由 adapter 映射。 use std::{error::Error, fmt}; #[derive(Clone, Debug, PartialEq, Eq)] pub enum PuzzleFieldError { MissingText, MissingSessionId, MissingProfileId, MissingRunId, MissingPieceId, MissingAuthorDisplayName, InvalidTagCount, InvalidGridSize, InvalidTargetCell, InvalidOperation, } impl fmt::Display for PuzzleFieldError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::MissingText => write!(f, "必填文本缺失"), Self::MissingSessionId => write!(f, "session_id 缺失"), Self::MissingProfileId => write!(f, "profile_id 缺失"), Self::MissingRunId => write!(f, "run_id 缺失"), Self::MissingPieceId => write!(f, "piece_id 缺失"), Self::MissingAuthorDisplayName => write!(f, "author_display_name 缺失"), Self::InvalidTagCount => write!(f, "标签数量不合法"), Self::InvalidGridSize => write!(f, "网格规格不合法"), Self::InvalidTargetCell => write!(f, "目标格子不合法"), Self::InvalidOperation => write!(f, "操作不合法"), } } } impl Error for PuzzleFieldError {}