yfinance_rs/core/diagnostics/
issue.rs1use std::fmt;
2
3#[non_exhaustive]
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub enum ProjectionIssue {
7 MissingRequiredField {
9 field: &'static str,
11 },
12 MissingRequiredFields {
14 fields: Vec<&'static str>,
16 },
17 InvalidField {
19 field: &'static str,
21 details: String,
23 },
24 ConversionFailed {
26 target: &'static str,
28 },
29 CurrencyUnresolved,
31 InvalidCurrency {
33 code: String,
35 },
36 ProviderError {
38 message: String,
40 },
41 ProviderUnavailable {
43 feature: &'static str,
45 },
46}
47
48impl fmt::Display for ProjectionIssue {
49 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
50 match self {
51 Self::MissingRequiredField { field } => write!(f, "missing required field {field}"),
52 Self::MissingRequiredFields { fields } => {
53 write!(f, "missing required fields {}", fields.join(", "))
54 }
55 Self::InvalidField { field, details } => write!(f, "invalid field {field}: {details}"),
56 Self::ConversionFailed { target } => write!(f, "conversion failed for {target}"),
57 Self::CurrencyUnresolved => f.write_str("currency unresolved"),
58 Self::InvalidCurrency { code } => write!(f, "invalid currency code {code}"),
59 Self::ProviderError { message } => write!(f, "provider error: {message}"),
60 Self::ProviderUnavailable { feature } => {
61 write!(f, "provider did not return {feature}")
62 }
63 }
64 }
65}