finance-query 3.0.0

A Rust library for querying financial data
Documentation
// @generated by `cargo soothfast docs gen-tests`
// source: docs/library/ticker.md line 193
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    use finance_query::Ticker;

    let ticker = Ticker::new("AAPL").await?;

    // First access triggers ONE API call for ALL modules
    let price = ticker.price().await?;
    if let Some(p) = price {
        println!(
            "Market State: {}",
            p.market_state.as_deref().unwrap_or("N/A")
        );
        println!("Currency: {}", p.currency.as_deref().unwrap_or("N/A"));
    }

    // Subsequent calls use cached data (no network request)
    let financial_data = ticker.financial_data().await?;
    if let Some(fd) = financial_data {
        let revenue = fd.total_revenue.as_ref().and_then(|v| v.raw).unwrap_or(0);
        println!("Revenue: ${}", revenue);
        let profit_margins = fd
            .profit_margins
            .as_ref()
            .and_then(|v| v.raw)
            .unwrap_or(0.0);
        println!("Profit Margin: {:.2}%", profit_margins * 100.0);
    }

    // Get EPS from DefaultKeyStatistics (not FinancialData)
    if let Some(stats) = ticker.key_stats().await? {
        let eps = stats
            .trailing_eps
            .as_ref()
            .and_then(|v| v.raw)
            .unwrap_or(0.0);
        println!("EPS: ${:.2}", eps);
    }

    let profile = ticker.asset_profile().await?;
    if let Some(prof) = profile {
        println!("Sector: {}", prof.sector.as_deref().unwrap_or("N/A"));
        println!("Industry: {}", prof.industry.as_deref().unwrap_or("N/A"));
        println!("Website: {}", prof.website.as_deref().unwrap_or("N/A"));
        println!(
            "Description: {}",
            prof.long_business_summary.as_deref().unwrap_or("N/A")
        );
    }
    Ok(())
}