pub struct CryptoCoin { /* private fields */ }Expand description
A cryptocurrency coin backed by configured data providers.
Created via Providers::crypto.
Implementations§
Source§impl CryptoCoin
impl CryptoCoin
Sourcepub fn cache(self, ttl: Duration) -> Self
pub fn cache(self, ttl: Duration) -> Self
Cache responses for ttl instead of the default 60 seconds,
deduplicating concurrent identical requests.
Sourcepub fn cache_forever(self) -> Self
pub fn cache_forever(self) -> Self
Cache responses for the handle’s lifetime instead of the default 60 seconds.
Source§impl CryptoCoin
impl CryptoCoin
Sourcepub async fn quote(&self, vs_currency: &str) -> Result<CryptoQuote>
pub async fn quote(&self, vs_currency: &str) -> Result<CryptoQuote>
Fetch the current quote for this coin priced in vs_currency (e.g., "usd").
Sourcepub async fn tvl(&self) -> Result<ProtocolTvl>
pub async fn tvl(&self) -> Result<ProtocolTvl>
Fetch total value locked for this handle read as a DeFi protocol
slug (e.g. providers.crypto("aave")).
Routed through Capability::CRYPTO; only DefiLlama serves it, so route
CRYPTO to include Provider::DefiLlama.
The id is a protocol slug here, not a coin id — most DefiLlama slugs
happen to match their CoinGecko id, but not all do. The response is
cached on the handle, so a repeat call costs nothing.
Sourcepub async fn tvl_history(&self) -> Result<Vec<TvlPoint>>
pub async fn tvl_history(&self) -> Result<Vec<TvlPoint>>
Fetch this protocol’s full TVL history, oldest first.
Same routing and slug semantics as tvl.
Sourcepub async fn chart(
&self,
vs_currency: &str,
interval: Interval,
range: TimeRange,
) -> Result<Chart>
pub async fn chart( &self, vs_currency: &str, interval: Interval, range: TimeRange, ) -> Result<Chart>
Fetch historical OHLCV candles for this coin priced in vs_currency.
Unlike quote (which uses the coin id, e.g.
"bitcoin"), the CHART route is symbol-based, so the chart symbol is
built as "{ID}-{VS}" uppercased (e.g. "BTC-USD"). This resolves on
the default Yahoo route only when the handle’s id is the coin’s ticker
(providers.crypto("BTC")); coins identified by a CoinGecko id should
route Capability::CHART to a crypto-aware provider.
With the crypto feature, .route(Capability::CHART, [Provider::CoinGecko]) serves history keylessly by coin id. CoinGecko
picks its own bar granularity from the requested range, so interval is
advisory there, and its OHLC endpoint carries no volume — those candles
report volume: 0.
Sourcepub async fn history(
&self,
vs_currency: &str,
range: TimeRange,
) -> Result<Chart>
pub async fn history( &self, vs_currency: &str, range: TimeRange, ) -> Result<Chart>
Fetch historical candles over range at a sensible default interval
(TimeRange::default_interval).
Sourcepub async fn indicators(
&self,
vs_currency: &str,
interval: Interval,
range: TimeRange,
) -> Result<IndicatorsSummary>
pub async fn indicators( &self, vs_currency: &str, interval: Interval, range: TimeRange, ) -> Result<IndicatorsSummary>
Compute all technical indicators from this coin’s chart data (priced in
vs_currency).
Sourcepub async fn indicator(
&self,
indicator: Indicator,
vs_currency: &str,
interval: Interval,
range: TimeRange,
) -> Result<IndicatorResult>
pub async fn indicator( &self, indicator: Indicator, vs_currency: &str, interval: Interval, range: TimeRange, ) -> Result<IndicatorResult>
Compute a single technical indicator from this coin’s chart data.
Auto Trait Implementations§
impl !Freeze for CryptoCoin
impl !RefUnwindSafe for CryptoCoin
impl !UnwindSafe for CryptoCoin
impl Send for CryptoCoin
impl Sync for CryptoCoin
impl Unpin for CryptoCoin
impl UnsafeUnpin for CryptoCoin
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more