mahjong_core/game/
errors.rs

1use strum_macros::EnumIter;
2
3#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
4pub enum DiscardTileError {
5    ClaimedAnotherTile,
6    NoPlayerCanDiscard,
7    PlayerHasNoTile,
8    TileIsExposed,
9    TileIsPartOfMeld,
10}
11
12#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
13pub enum CreateMeldError {
14    EndRound,
15    NotMeld,
16    TileIsPartOfMeld,
17}
18
19#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
20pub enum PassNullRoundError {
21    HandCanDropTile,
22    HandCanSayMahjong,
23    WallNotEmpty,
24}
25
26#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
27pub enum BreakMeldError {
28    MeldIsKong,
29    MissingHand,
30    TileIsExposed,
31}
32
33#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
34pub enum DecideDealerError {
35    DuplicatedWinds,
36}
37
38#[derive(Debug, PartialEq, Eq, Clone, EnumIter)]
39pub enum DrawError {
40    NotEnoughTiles,
41}
42
43impl Default for DrawError {
44    fn default() -> Self {
45        Self::NotEnoughTiles
46    }
47}