The Official Holiday and Event API for Rust

Industry-leading Holiday and Event API for Rust. Over 5,000 holidays and thousands of descriptions. Trusted by the World’s leading companies. Built by developers for developers since 2011.
Authentication
Access to the Holiday and Event API requires an API Key. You can get for one for FREE here, no credit card required! Note that free plans are limited. To access more data and have more requests, a paid plan is required.
Installation
cargo add holiday_event_api
Example
use holiday_event_api::{HolidayEventApi, model::{GetEventsRequest, RateLimited, GetEventInfoRequest, SearchRequest}};
#[tokio::main]
async fn main() {
let client = HolidayEventApi::new("<your API key>".into(), None);
if client.is_err() {
println!("{}", client.unwrap_err());
return;
}
let client = client.unwrap();
let events = client.get_events(GetEventsRequest {
date: Some("today".into()),
adult: Some(false),
timezone: Some("America/Chicago".into()),
}).await;
if events.is_err() {
println!("{}", events.unwrap_err());
return;
}
let events = events.unwrap();
let event = events.events.get(0).unwrap();
println!("Today is {}! Find more information at: {}.", event.name, event.url);
let rate_limit = events.get_rate_limit();
println!("Rate limit remaining: {}/{} (month).\n", rate_limit.remaining_month, rate_limit.limit_month);
let event_info = client.get_event_info(GetEventInfoRequest {
id: event.id.to_string(),
start: None, end: None, }).await;
if event_info.is_err() {
println!("{}", event_info.unwrap_err());
return;
}
let event_info = event_info.unwrap();
println!("The Event's hashtags are {:?}.", event_info.event.hashtags);
let query = "pizza day";
let search = client.search(SearchRequest {
query: query.into(),
adult: None, }).await;
if search.is_err() {
println!("{}", search.unwrap_err());
return;
}
let search = search.unwrap();
println!("Found {} events, including {}, that match the query \"{}\".", search.events.len(), search.events.first().unwrap().name, query)
}