solana_maths/
error.rs

1use num_derive::FromPrimitive;
2use solana_program::{decode_error::DecodeError, program_error::ProgramError};
3use thiserror::Error;
4
5#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)]
6pub enum MathError {
7    #[error("AddOverflow")]
8    AddOverflow,
9    #[error("Underflow")]
10    SubUnderflow,
11    #[error("MulOverflow")]
12    MulOverflow,
13    #[error("DividedByZero")]
14    DividedByZero,
15    #[error("UnableToRoundU64")]
16    UnableToRoundU64,
17    #[error("UnableToRoundU128")]
18    UnableToRoundU128,
19}
20
21impl From<MathError> for ProgramError {
22    fn from(e: MathError) -> Self {
23        ProgramError::Custom(e as u32)
24    }
25}
26
27impl<T> DecodeError<T> for MathError {
28    fn type_of() -> &'static str {
29        "Math Error"
30    }
31}