yfinance-rs 0.9.1

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

use serde_field_result::{BorrowedJsonField, Field, JsonField};

pub type WireValue<T> = Field<T>;

pub type BufferedWireValue<T> = JsonField<T>;

pub type BorrowedWireValue<'de, T> = BorrowedJsonField<'de, T>;

pub trait WireField<T> {
    fn as_ref(&self) -> Option<&T>;
    fn invalid_details(&self) -> Option<Cow<'_, str>>;
}

impl<T> WireField<T> for WireValue<T> {
    fn as_ref(&self) -> Option<&T> {
        self.as_ref()
    }

    fn invalid_details(&self) -> Option<Cow<'_, str>> {
        self.error().map(serde_field_result::FieldError::message)
    }
}

impl<T> WireField<T> for BorrowedWireValue<'_, T> {
    fn as_ref(&self) -> Option<&T> {
        self.as_ref()
    }

    fn invalid_details(&self) -> Option<Cow<'_, str>> {
        self.error().map(serde_field_result::FieldError::message)
    }
}

impl<T> WireField<T> for BufferedWireValue<T> {
    fn as_ref(&self) -> Option<&T> {
        self.as_ref()
    }

    fn invalid_details(&self) -> Option<Cow<'_, str>> {
        self.error().map(serde_field_result::FieldError::message)
    }
}