Files
Genarrative/server-rs/crates/module-puzzle/src/errors.rs

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 {}