pub use as_http_status_code_derive::AsStatusCode;
pub use http::StatusCode;
pub trait AsStatusCode {
fn as_status_code(&self) -> StatusCode;
}
#[cfg(test)]
#[allow(unused)]
mod tests {
use as_http_status_code::AsStatusCode;
use http::StatusCode;
#[derive(AsStatusCode)]
enum Foo {
#[as_status_code(StatusCode::OK)]
Ok,
#[as_status_code(StatusCode::NOT_FOUND)]
NotFound(i32),
#[as_status_code(StatusCode::INTERNAL_SERVER_ERROR)]
InternalServerError { message: String },
}
#[derive(AsStatusCode)]
#[as_status_code(StatusCode::OK)]
struct Bar {
_field: (),
}
#[test]
fn foo() {
assert_eq!(Foo::Ok.as_status_code(), StatusCode::OK);
assert_eq!(Foo::NotFound(789).as_status_code(), StatusCode::NOT_FOUND);
assert_eq!(
Foo::InternalServerError {
message: "msg".to_owned()
}
.as_status_code(),
StatusCode::INTERNAL_SERVER_ERROR
);
assert_eq!(Bar { _field: () }.as_status_code(), StatusCode::OK);
}
}