File size: 871 Bytes
60fa15e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9c8dea2
 
 
 
60fa15e
 
9c8dea2
60fa15e
9c8dea2
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use axum::{
    body::Body,
    http::{Request, Response},
    middleware::{self, Next},
    routing::get,
    Router,
};
use std::time::Instant;

async fn track_time(req: Request<Body>, next: Next) -> Response<Body> {
    let start = Instant::now();
    let response = next.run(req).await;
    let latency = start.elapsed().as_micros(); // Microseconds for precision
    
    let mut response = response;
    response.headers_mut().insert(
        "x-process-time-us",
        latency.to_string().parse().unwrap(),
    );
    response
}

#[tokio::main]
async fn main() {
    let app = Router::new()
        .route("/", get(|| async { "Fastest code on HF" }))
        .layer(middleware::from_fn(track_time)); // Wrap everything in the timer

    let listener = tokio::net::TcpListener::bind("0.0.0.0:7860").await.unwrap();
    axum::serve(listener, app).await.unwrap();
}