Skip to main content

utoipa_helper/
status_code_trait.rs

1use axum::http::StatusCode;
2
3pub trait StatusCodeTrait: Send + Sync {
4    fn status_code() -> StatusCode;
5}
6
7pub struct StatusCodeOk {}
8
9impl StatusCodeTrait for StatusCodeOk {
10    fn status_code() -> StatusCode {
11        StatusCode::OK
12    }
13}
14
15pub struct StatusCodeCreated {}
16
17impl StatusCodeTrait for StatusCodeCreated {
18    fn status_code() -> StatusCode {
19        StatusCode::CREATED
20    }
21}
22
23pub struct StatusCodeNoContent {}
24
25impl StatusCodeTrait for StatusCodeNoContent {
26    fn status_code() -> StatusCode {
27        StatusCode::NO_CONTENT
28    }
29}
30
31pub struct StatusCodeValue<const S: u16> {}
32
33impl<const S: u16> StatusCodeTrait for StatusCodeValue<S> {
34    fn status_code() -> StatusCode {
35        StatusCode::from_u16(S).unwrap_or(StatusCode::OK)
36    }
37}