rosu_pp/any/
calc_error.rs1use std::{
2 error::Error,
3 fmt::{Display, Formatter, Result as FmtResult},
4};
5
6use crate::model::{beatmap::TooSuspicious, mode::ConvertError};
7
8#[derive(Copy, Clone, Debug)]
10pub enum CalculateError {
11 Convert(ConvertError),
13 Suspicion(TooSuspicious),
15}
16
17impl Error for CalculateError {
18 fn source(&self) -> Option<&(dyn Error + 'static)> {
19 match self {
20 CalculateError::Convert(err) => Some(err),
21 CalculateError::Suspicion(err) => Some(err),
22 }
23 }
24}
25
26impl Display for CalculateError {
27 fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
28 f.write_str("Failed to calculate attributes")?;
29
30 match self {
31 CalculateError::Convert(_) => f.write_str(" (Convert)")?,
32 CalculateError::Suspicion(_) => f.write_str(" (Suspicion)")?,
33 }
34
35 Ok(())
36 }
37}
38
39impl From<ConvertError> for CalculateError {
40 fn from(value: ConvertError) -> Self {
41 CalculateError::Convert(value)
42 }
43}
44
45impl From<TooSuspicious> for CalculateError {
46 fn from(value: TooSuspicious) -> Self {
47 CalculateError::Suspicion(value)
48 }
49}