// use actix_web::{web, App, HttpServer}; use std::sync::Mutex; struct AppStateWithCounter { counter: Mutex, // <- Mutex is necessary to mutate safely across threads } async fn index(data: web::Data) -> String { let mut counter = data.counter.lock().unwrap(); // <- get counter's MutexGuard *counter += 1; // <- access counter inside MutexGuard format!("Request number: {}", counter) // <- response with count } // // #[actix_web::main] async fn main() -> std::io::Result<()> { let counter = web::Data::new(AppStateWithCounter { counter: Mutex::new(0), }); HttpServer::new(move || { // move counter into the closure App::new() // Note: using app_data instead of data .app_data(counter.clone()) // <- register the created data .route("/", web::get().to(index)) }) .bind("127.0.0.1:8080")? .run() .await } //