windmark 0.9.0

An elegant and highly performant async Gemini server framework
Documentation
//! `cargo run --example async`

use windmark::response::Response;

#[windmark::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  let mut router = windmark::router::Router::new();
  #[cfg(feature = "tokio")]
  let async_clicks = std::sync::Arc::new(tokio::sync::Mutex::new(0));
  #[cfg(feature = "async-std")]
  let async_clicks = std::sync::Arc::new(async_std::sync::Mutex::new(0));

  router.set_private_key_file("windmark_private.pem");
  router.set_certificate_file("windmark_public.pem");
  router.mount("/clicks", move |_| {
    let async_clicks = async_clicks.clone();

    async move {
      let mut clicks = async_clicks.lock().await;

      *clicks += 1;

      Response::success(*clicks)
    }
  });
  router.mount("/async", |_| {
    async {
      Response::success("This response was sent using an asynchronous handler.")
    }
  });

  router.run().await
}