1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
mod calculator_float;
pub use calculator_float::CalculatorFloat;
mod calculator;
pub use calculator::Calculator;
mod calculator_complex;
pub use calculator_complex::CalculatorComplex;
use thiserror::Error;
#[derive(Error, Debug, PartialEq)]
pub enum CalculatorError {
#[error("Input can not be converted to CalculatorFloat")]
NotConvertable,
#[error("Symbolic value {val:?} can not be converted to float")]
FloatSymbolicNotConvertable { val: String },
#[error("Symbolic value {val:?} can not be converted to complex")]
ComplexSymbolicNotConvertable { val: CalculatorComplex },
#[error("Imaginary part of CalculatorComplex {val:?} not zero")]
ComplexCanNotBeConvertedToFloat { val: CalculatorComplex },
#[error("Parsing error: {msg:?}")]
ParsingError { msg: &'static str },
#[error("Function {fct:?} not implemented.")]
NotImplementedError { fct: &'static str },
#[error("Function {fct:?} not found.")]
FunctionNotFound { fct: String },
#[error("Variable {name:?} not set.")]
VariableNotSet { name: String },
#[error("Parsing error: Unexpected end of expression")]
UnexpetedEndOfExpression,
#[error("Division by zero error")]
DivisionByZero,
#[error("Parsing Expression did not return value as expected.")]
NoValueReturnedParsing,
#[error("Not enough function arguments.")]
NotEnoughFunctionArguments,
}