yfinance-rs 0.9.1

Ergonomic Rust client for Yahoo Finance, supporting historical prices, real-time streaming, options, fundamentals, and more.
Documentation
use super::DirectCurrencyField;

#[derive(Clone, Copy, Debug)]
pub enum TradingCurrencyEvidence<'a> {
    None,
    ChartMeta(Option<&'a str>),
    OptionsQuote(Option<&'a str>),
}

impl<'a> TradingCurrencyEvidence<'a> {
    pub(super) const fn direct_code(self) -> Option<&'a str> {
        match self {
            Self::None => None,
            Self::ChartMeta(code) | Self::OptionsQuote(code) => code,
        }
    }

    pub(super) const fn label(self) -> &'static str {
        match self {
            Self::None => "none",
            Self::ChartMeta(_) => "chart.meta.currency",
            Self::OptionsQuote(_) => "options quote currency",
        }
    }

    pub(super) const fn field(self) -> Option<DirectCurrencyField> {
        match self {
            Self::None => None,
            Self::ChartMeta(_) => Some(DirectCurrencyField::ChartMeta),
            Self::OptionsQuote(_) => Some(DirectCurrencyField::OptionsQuote),
        }
    }
}

#[derive(Clone, Copy, Debug)]
pub enum ReportingCurrencyEvidence<'a> {
    FinancialCurrency(Option<&'a str>),
    TimeseriesCurrencyCode(Option<&'a str>),
}

impl<'a> ReportingCurrencyEvidence<'a> {
    pub(super) const fn direct_code(self) -> Option<&'a str> {
        match self {
            Self::FinancialCurrency(code) | Self::TimeseriesCurrencyCode(code) => code,
        }
    }

    pub(super) const fn label(self) -> &'static str {
        match self {
            Self::FinancialCurrency(_) => "financialCurrency",
            Self::TimeseriesCurrencyCode(_) => "timeseries currencyCode",
        }
    }

    pub(super) const fn field(self) -> DirectCurrencyField {
        match self {
            Self::FinancialCurrency(_) => DirectCurrencyField::FinancialCurrency,
            Self::TimeseriesCurrencyCode(_) => DirectCurrencyField::TimeseriesCurrencyCode,
        }
    }
}

#[derive(Clone, Copy, Debug)]
pub enum CorporateActionCurrencyEvidence<'a> {
    ChartMeta(Option<&'a str>),
}

impl<'a> CorporateActionCurrencyEvidence<'a> {
    pub(super) const fn direct_code(self) -> Option<&'a str> {
        match self {
            Self::ChartMeta(code) => code,
        }
    }

    pub(super) const fn label(self) -> &'static str {
        match self {
            Self::ChartMeta(_) => "chart.meta.currency",
        }
    }

    pub(super) const fn field(self) -> DirectCurrencyField {
        match self {
            Self::ChartMeta(_) => DirectCurrencyField::ChartMeta,
        }
    }
}

#[derive(Clone, Copy, Debug)]
pub enum AnalystEstimateCurrencyEvidence<'a> {
    Earnings(Option<&'a str>),
    Revenue(Option<&'a str>),
    EpsTrend(Option<&'a str>),
}

impl<'a> AnalystEstimateCurrencyEvidence<'a> {
    pub(super) const fn direct_code(self) -> Option<&'a str> {
        match self {
            Self::Earnings(code) | Self::Revenue(code) | Self::EpsTrend(code) => code,
        }
    }

    pub(super) const fn label(self) -> &'static str {
        match self {
            Self::Earnings(_) => "earningsCurrency",
            Self::Revenue(_) => "revenueCurrency",
            Self::EpsTrend(_) => "epsTrendCurrency",
        }
    }

    pub(super) const fn field(self) -> DirectCurrencyField {
        match self {
            Self::Earnings(_) => DirectCurrencyField::EarningsCurrency,
            Self::Revenue(_) => DirectCurrencyField::RevenueCurrency,
            Self::EpsTrend(_) => DirectCurrencyField::EpsTrendCurrency,
        }
    }
}