pub trait DiscoveryProvider: ProviderCore {
Show 13 methods
// Required method
fn fetch_symbol_search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
// Provided methods
fn fetch_delisted_stocks_page_at<'life0, 'async_trait>(
&'life0 self,
_page: u32,
_limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
fn fetch_delisted_stocks_page<'life0, 'life1, 'async_trait>(
&'life0 self,
_limit: u32,
_cursor: Option<&'life1 PageCursor>,
) -> Pin<Box<dyn Future<Output = Result<ProviderPage<SymbolMatch>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn fetch_stock_list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
fn fetch_company_profiles_bulk<'life0, 'async_trait>(
&'life0 self,
_part: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<CompanyProfile>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
fn fetch_stock_listings_page<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_request: &'life1 StockListingRequest,
_cursor: Option<&'life2 PageCursor>,
) -> Pin<Box<dyn Future<Output = Result<ProviderPage<StockListing>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn fetch_symbol_details_at<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_symbol: &'life1 str,
_date: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<SymbolDetails>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn fetch_ticker_changes<'life0, 'life1, 'async_trait>(
&'life0 self,
_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<TickerChange>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn fetch_stock_types<'life0, 'life1, 'async_trait>(
&'life0 self,
_locale: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<StockType>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn fetch_symbol_details<'life0, 'life1, 'async_trait>(
&'life0 self,
_symbol: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<SymbolDetails>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn fetch_exchanges<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ExchangeInfo>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
fn fetch_screener<'life0, 'life1, 'async_trait>(
&'life0 self,
_filters: &'life1 ScreenerFilters,
) -> Pin<Box<dyn Future<Output = Result<Vec<ScreenerMatch>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn fetch_listing_status<'life0, 'async_trait>(
&'life0 self,
_active: bool,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
}Expand description
crate::Capability::DISCOVERY — symbol search, reference data, exchanges,
screeners.
Required Methods§
Sourcefn fetch_symbol_search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_symbol_search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Search the provider’s symbol universe by free-text query.
Provided Methods§
Sourcefn fetch_delisted_stocks_page_at<'life0, 'async_trait>(
&'life0 self,
_page: u32,
_limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn fetch_delisted_stocks_page_at<'life0, 'async_trait>(
&'life0 self,
_page: u32,
_limit: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Fetch an independently numbered delisted page; callers validate scan progress.
Sourcefn fetch_delisted_stocks_page<'life0, 'life1, 'async_trait>(
&'life0 self,
_limit: u32,
_cursor: Option<&'life1 PageCursor>,
) -> Pin<Box<dyn Future<Output = Result<ProviderPage<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_delisted_stocks_page<'life0, 'life1, 'async_trait>(
&'life0 self,
_limit: u32,
_cursor: Option<&'life1 PageCursor>,
) -> Pin<Box<dyn Future<Output = Result<ProviderPage<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetch one delisted-stock page, bound to this provider and page size.
Sourcefn fetch_stock_list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn fetch_stock_list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Fetch the current full directory, without assuming active status.
Sourcefn fetch_company_profiles_bulk<'life0, 'async_trait>(
&'life0 self,
_part: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<CompanyProfile>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn fetch_company_profiles_bulk<'life0, 'async_trait>(
&'life0 self,
_part: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<CompanyProfile>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Fetch one provider-defined bulk-profile part, not the entire directory.
Sourcefn fetch_stock_listings_page<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_request: &'life1 StockListingRequest,
_cursor: Option<&'life2 PageCursor>,
) -> Pin<Box<dyn Future<Output = Result<ProviderPage<StockListing>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn fetch_stock_listings_page<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_request: &'life1 StockListingRequest,
_cursor: Option<&'life2 PageCursor>,
) -> Pin<Box<dyn Future<Output = Result<ProviderPage<StockListing>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Fetch one dated stock-directory page.
Sourcefn fetch_symbol_details_at<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_symbol: &'life1 str,
_date: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<SymbolDetails>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn fetch_symbol_details_at<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_symbol: &'life1 str,
_date: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<SymbolDetails>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Fetch company details as of a calendar date.
Sourcefn fetch_ticker_changes<'life0, 'life1, 'async_trait>(
&'life0 self,
_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<TickerChange>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_ticker_changes<'life0, 'life1, 'async_trait>(
&'life0 self,
_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<TickerChange>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetch the dated ticker changes of one security, oldest first.
Sourcefn fetch_stock_types<'life0, 'life1, 'async_trait>(
&'life0 self,
_locale: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<StockType>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_stock_types<'life0, 'life1, 'async_trait>(
&'life0 self,
_locale: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<StockType>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetch the provider’s stock-type vocabulary.
Sourcefn fetch_symbol_details<'life0, 'life1, 'async_trait>(
&'life0 self,
_symbol: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<SymbolDetails>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_symbol_details<'life0, 'life1, 'async_trait>(
&'life0 self,
_symbol: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<SymbolDetails>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetch detailed reference data for a single symbol.
Sourcefn fetch_exchanges<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ExchangeInfo>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn fetch_exchanges<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ExchangeInfo>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Fetch the provider’s tradable exchange listing.
Sourcefn fetch_screener<'life0, 'life1, 'async_trait>(
&'life0 self,
_filters: &'life1 ScreenerFilters,
) -> Pin<Box<dyn Future<Output = Result<Vec<ScreenerMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_screener<'life0, 'life1, 'async_trait>(
&'life0 self,
_filters: &'life1 ScreenerFilters,
) -> Pin<Box<dyn Future<Output = Result<Vec<ScreenerMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Run a screener query over the provider’s universe.
Sourcefn fetch_listing_status<'life0, 'async_trait>(
&'life0 self,
_active: bool,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn fetch_listing_status<'life0, 'async_trait>(
&'life0 self,
_active: bool,
) -> Pin<Box<dyn Future<Output = Result<Vec<SymbolMatch>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Fetch the provider’s whole listed-security universe.
active = false asks for delisted securities instead. Unlike
fetch_symbol_search this is an unfiltered
dump, so expect thousands of rows in one response.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".