// use actix_web::{error, get, middleware::Logger, App, HttpServer, Result}; use derive_more::{Display, Error}; use log::debug; #[derive(Debug, Display, Error)] #[display(fmt = "my error: {}", name)] pub struct MyError { name: &'static str, } // Use default implementation for `error_response()` method impl error::ResponseError for MyError {} #[get("/")] async fn index() -> Result<&'static str, MyError> { let err = MyError { name: "test error" }; debug!("{}", err); Err(err) } #[rustfmt::skip] #[actix_web::main] async fn main() -> std::io::Result<()> { std::env::set_var("RUST_LOG", "my_errors=debug,actix_web=info"); std::env::set_var("RUST_BACKTRACE", "1"); env_logger::init(); HttpServer::new(|| { let logger = Logger::default(); App::new() .wrap(logger) .service(index) }) .bind("127.0.0.1:8080")? .run() .await } //