/* Copyright (C) 2019 Akshay Oppiliappan * Refer to LICENCE for more information. * */ #[derive(Debug)] pub enum CalcError { Math(Math), Syntax(String), Parser(String), } #[derive(Debug)] pub enum Math { DivideByZero, OutOfBounds, UnknownBase } pub fn handler(e: CalcError) -> String { match e { CalcError::Math(math_err) => { match math_err { Math::DivideByZero => format!("Math Error: Divide by zero error!"), Math::OutOfBounds => format!("Domain Error: Out of bounds!"), Math::UnknownBase => format!("Base too large! Accepted ranges: 0 - 36") } }, CalcError::Syntax(details) => { format!("Syntax Error: {}", details) }, CalcError::Parser(details) => { format!("Parser Error: {}", details) } } }