rusty2048_core/
error.rs

1use thiserror::Error;
2
3/// Game-related errors
4#[derive(Error, Debug)]
5pub enum GameError {
6    #[error("Invalid move: {0}")]
7    InvalidMove(String),
8
9    #[error("Game is already over")]
10    GameOver,
11
12    #[error("Invalid board position: ({row}, {col})")]
13    InvalidPosition { row: usize, col: usize },
14
15    #[error("Invalid board size: {size} (must be > 0)")]
16    InvalidBoardSize { size: usize },
17
18    #[error("No undo available")]
19    NoUndoAvailable,
20
21    #[error("Serialization error: {0}")]
22    Serialization(String),
23
24    #[error("Random number generation error: {0}")]
25    RngError(String),
26
27    #[error("Invalid operation: {0}")]
28    InvalidOperation(String),
29}
30
31/// Result type for game operations
32pub type GameResult<T> = Result<T, GameError>;