TushareClientEx

Struct TushareClientEx 

Source
pub struct TushareClientEx { /* private fields */ }
Expand description

Extended client wrapper that adds advanced behaviors on top of TushareClient.

Currently supported:

  • Per-API minimum interval rate limiting (default: sleep) If an API is configured with a minimum interval (e.g. 10 seconds), repeated calls to the same API will be automatically delayed so that two calls are at least min_interval apart. Callers do not need to implement any sleep logic.

  • Retry with exponential backoff (optional) When enabled via Self::with_retry_config, network/timeout failures will be retried with exponential backoff.

This wrapper is designed to keep the core client stable while allowing you to opt into additional behaviors.

Implementations§

Source§

impl TushareClientEx

Source

pub fn new(inner: TushareClient) -> Self

Create a new wrapper client.

By default, no per-API interval limit is applied and retry is disabled.

Source

pub fn with_api_min_interval(self, api: Api, min_interval: Duration) -> Self

Configure a minimum interval between two calls of the same API.

If the interval is not met, the wrapper will sleep until it becomes eligible to call.

Example:

use std::time::Duration;
use tushare_api::{Api, TushareClient, TushareClientEx};

TushareClientEx::new(inner)
    .with_api_min_interval(Api::Daily, Duration::from_secs(10))
Source

pub fn with_retry_config(self, config: RetryConfig) -> Self

Enable retry with exponential backoff.

Retryable errors:

Non-retryable errors (by design):

Source

pub fn inner(&self) -> &TushareClient

Borrow the underlying TushareClient.

Source

pub fn into_inner(self) -> TushareClient

Consume the wrapper and return the underlying TushareClient.

Source

pub async fn call_api<T>(&self, request: &T) -> TushareResult<TushareResponse>

Call API with configured rate limiting (sleep) and optional retry.

Source

pub async fn call_api_as<T, R>( &self, request: &R, ) -> TushareResult<TushareEntityList<T>>

Trait Implementations§

Source§

impl Debug for TushareClientEx

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,