pub struct Client {
pub base_url: String,
/* private fields */
}Expand description
Fetch indicator observations.
§Arguments
countries: ISO2/ISO3 country codes or aggregate codes ("DEU","USA","EUU"…). Multiple codes are allowed; they are joined for the API (e.g.,"DEU;USA").indicators: Indicator IDs ("SP.POP.TOTL", …). Multiple allowed.date: A single year (Year(2020)) or an inclusive range (Range { start, end }).source: Optional numeric source id (e.g.,2for WDI). Required by the API when requesting multiple indicators.
§Returns
A Vec<models::DataPoint> where one row equals one observation (country, indicator, year).
§Errors
- Network/HTTP error
- JSON decoding error
- API-level error payload (surfaced as an error)
§Example
let cli = Client::default();
let data = cli.fetch(
&["DEU".into(), "USA".into()],
&["SP.POP.TOTL".into()],
Some(DateSpec::Range { start: 2015, end: 2020 }),
None,
)?;Fields§
§base_url: StringImplementations§
Source§impl Client
impl Client
Sourcepub fn fetch_indicator_units(
&self,
indicators: &[String],
) -> Result<HashMap<String, String>>
pub fn fetch_indicator_units( &self, indicators: &[String], ) -> Result<HashMap<String, String>>
Fetch units from the World Bank indicator endpoint for the given indicators.
Returns a map from indicator ID to unit string. Missing indicators or those
without units will not be present in the returned HashMap.
§Arguments
indicators: Indicator IDs to fetch metadata for (e.g.,["SP.POP.TOTL"]).
§Errors
Returns an error if:
- Network request fails or times out
- HTTP response status is not successful (non-2xx)
- Response body cannot be parsed as JSON
- API returns an error message in the response
§Example
let cli = Client::default();
let units = cli.fetch_indicator_units(&["SP.POP.TOTL".into()])?;Sourcepub fn fetch(
&self,
countries: &[String],
indicators: &[String],
date: Option<DateSpec>,
source: Option<u32>,
) -> Result<Vec<DataPoint>>
pub fn fetch( &self, countries: &[String], indicators: &[String], date: Option<DateSpec>, source: Option<u32>, ) -> Result<Vec<DataPoint>>
Fetch indicator observations.
§Arguments
countries: ISO2 (e.g., “DE”) or ISO3 (e.g., “DEU”) or aggregates (e.g., “EUU”). Multiple accepted.indicators: e.g., “SP.POP.TOTL”. Multiple accepted.date: A single year or inclusive range.source: Optional numeric source id (e.g., 2 for WDI). Required by the World Bank API for efficient single-call multi-indicator requests. WhensourceisNoneand multiple indicators are requested, this method automatically falls back to individual requests per indicator and merges the results.
§Errors
Returns an error if:
- No countries provided (empty slice)
- No indicators provided (empty slice)
- Network request fails or times out
- HTTP response status is not successful (non-2xx)
- Response body cannot be parsed as JSON
- API returns an error message in the response
- Page limit exceeded (safety limit: 1000 pages)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Client
impl !RefUnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl !UnwindSafe for Client
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
Mutably borrows from an owned value. Read more