as_http_status_code/
lib.rs1pub use as_http_status_code_derive::AsStatusCode;
2pub use http::StatusCode;
3
4pub trait AsStatusCode {
5 fn as_status_code(&self) -> StatusCode;
6}
7
8#[cfg(test)]
9#[allow(unused)]
10mod tests {
11 use as_http_status_code::AsStatusCode;
12 use http::StatusCode;
13
14 #[derive(AsStatusCode)]
15 enum Foo {
16 #[as_status_code(StatusCode::OK)]
17 Ok,
18 #[as_status_code(StatusCode::NOT_FOUND)]
19 NotFound(i32),
20 #[as_status_code(StatusCode::INTERNAL_SERVER_ERROR)]
21 InternalServerError { message: String },
22 }
23
24 #[derive(AsStatusCode)]
25 #[as_status_code(StatusCode::OK)]
26 struct Bar {
27 _field: (),
28 }
29
30 #[test]
31 fn foo() {
32 assert_eq!(Foo::Ok.as_status_code(), StatusCode::OK);
33
34 assert_eq!(Foo::NotFound(789).as_status_code(), StatusCode::NOT_FOUND);
35
36 assert_eq!(
37 Foo::InternalServerError {
38 message: "msg".to_owned()
39 }
40 .as_status_code(),
41 StatusCode::INTERNAL_SERVER_ERROR
42 );
43
44 assert_eq!(Bar { _field: () }.as_status_code(), StatusCode::OK);
45 }
46}