tide_server_timing/lib.rs
1//! Server-Timing support for Tide + Tracing
2//!
3//! # Examples
4//!
5//! ```no_run
6//! use tide_server_timing::{TimingLayer, TimingMiddleware};
7//! use tracing_core::Level;
8//! use tracing_subscriber::layer::SubscriberExt;
9//!
10//! #[async_std::main]
11//! async fn main() -> tide::Result<()> {
12//! let sub = tracing_subscriber::fmt()
13//! .with_max_level(Level::TRACE)
14//! .finish()
15//! .with(TimingLayer::new());
16//!
17//! tracing::subscriber::set_global_default(sub).expect("no global subscriber has been set");
18//!
19//! let mut app = tide::new();
20//! app.with(TimingMiddleware::new());
21//! app.at("/").get(|_| async move { Ok("Hello chashu") });
22//! app.listen("localhost:8080").await?;
23//! Ok(())
24//! }
25//! ```
26
27#![forbid(future_incompatible, rust_2018_idioms)]
28#![deny(missing_debug_implementations, nonstandard_style)]
29#![warn(missing_docs, missing_doc_code_examples, unreachable_pub)]
30
31mod middleware;
32mod span_ext;
33mod timing_layer;
34
35use timing_layer::{SpanRootTiming, SpanTiming};
36
37pub use middleware::TimingMiddleware;
38pub use timing_layer::TimingLayer;