1use {
2 http::*,
3 std::{fmt, result::Result},
4};
5
6pub trait MapErrorStatusCode<OkT> {
12 fn map_err_status_code(self, status: StatusCode, message: &str) -> Result<OkT, StatusCode>;
14
15 fn map_err_internal_server(self, message: &str) -> Result<OkT, StatusCode>;
17}
18
19impl<OkT, FromErrorT> MapErrorStatusCode<OkT> for Result<OkT, FromErrorT>
20where
21 FromErrorT: fmt::Display,
22{
23 fn map_err_status_code(self, status: StatusCode, message: &str) -> Result<OkT, StatusCode> {
24 self.map_err(|error| {
25 tracing::error!("{}: {}", message, error);
26 status
27 })
28 }
29
30 fn map_err_internal_server(self, message: &str) -> Result<OkT, StatusCode> {
31 self.map_err_status_code(StatusCode::INTERNAL_SERVER_ERROR, message)
32 }
33}