Skip to main content

games/errors/
mod.rs

1//! Errors for Games-rs
2
3use core::fmt;
4
5/// Base Error code for Card errors (1XXX)
6pub const BASE_CARD_ERROR_CODE: i32 = 1000;
7/// Base Error code for BlackJack erros (2XXX)
8pub const BASE_BLACKJACK_ERROR_CODE: i32 = 2000;
9/// Base Error code for Solitaire (3XXX)
10pub const BASE_SOLITAIRE_ERROR_CODE: i32 = 3000;
11/// Base Error code for Rock Paper Scissors (4XXX)
12pub const BASE_ROCK_PAPER_SCISSORS_ERROR_CODE: i32 = 4000;
13/// Base Error code for Coin Toss (5XXX)
14pub const BASE_COIN_TOSS_ERROR_CODE: i32 = 5000;
15/// Base Error code for Deck errors (6XXX)
16pub const BASE_DECK_ERROR_CODE: i32 = 6000;
17/// Base Error code for SlotMachine (7XXX)
18pub const BASE_SLOT_MACHINE_ERROR_CODE: i32 = 7000;
19
20/// A Generic Error for simplification
21#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
22pub struct GenericError {
23    /// Error Code
24    pub error_code: i32,
25    /// Error message
26    pub error_message: String,
27}
28
29impl fmt::Display for GenericError {
30    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
31        write!(f, "Error ({}): {}", self.error_code, self.error_message)
32    }
33}
34
35/// Error code trait
36/// Note: This trait is Temporary, waiting for std::proces::Termination to be stabalized. (#43301)
37pub trait ErrorCode: fmt::Debug {
38    /// Return error code
39    fn error_code(&self) -> i32;
40}
41
42impl<E: ErrorCode> From<E> for GenericError {
43    fn from(err: E) -> Self {
44        Self {
45            error_code: err.error_code(),
46            error_message: format!("{:?}", err),
47        }
48    }
49}