earthmc 2.0.5

Async client for interacting with the EarthMC API
Documentation
use std::sync::Arc;

use earthmc::{
    client::ClientBuilder, model::query::SimpleQueryBuilder,
    retry_strategy::NeverRetry,
};
use parking_lot::Mutex;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ClientBuilder::default()
        .retry_strategy(Arc::new(Mutex::new(NeverRetry)))
        .build();

    let query = SimpleQueryBuilder::default()
        .insert("France")
        .insert_many(["Japan", "Germany", "Italy"])
        .insert("this nation doesn't exist") // nations that don't exist are simply omitted
        .build()?;

    let nations = client.nations(query).await?;

    for nation in &nations {
        println!(
            "{}'s nation, {}, has {} gold, {} residents, and {} town blocks.",
            nation.leader.name,
            nation.name,
            nation.stats.balance,
            nation.stats.num_residents,
            nation.stats.num_town_blocks
        );
    }

    Ok(())
}