tide-server-timing 0.16.0

Server-Timing support for Tide + Tracing
Documentation
use tide_server_timing::{TimingLayer, TimingMiddleware};
use tracing_core::Level;
use tracing_subscriber::layer::SubscriberExt;

use async_std::task;
use std::time::Duration;
use tracing_futures::Instrument;

#[async_std::main]
async fn main() -> tide::Result<()> {
    let sub = tracing_subscriber::fmt()
        .with_max_level(Level::TRACE)
        .finish()
        .with(TimingLayer::new());

    tracing::subscriber::set_global_default(sub).expect("no global subscriber has been set");

    let mut app = tide::new();
    app.with(TimingMiddleware::new());
    app.at("/").get(|_| async move {
        async move {
            task::sleep(Duration::from_millis(10)).await;
            Ok("Hello chashu")
        }
        .instrument(tracing::info_span!("my cool span"))
        .await
    });
    app.listen("localhost:8080").await?;
    Ok(())
}