40 lines
1.4 KiB
Rust
40 lines
1.4 KiB
Rust
//! 拼图领域错误。
|
|
//!
|
|
//! 错误只表达玩法规则失败,例如标签不足、移动非法或运行态不存在;
|
|
//! 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 {}
|