as_http_status_code 0.1.0

A derive macro for defining HTTP status code representation for struct and enum variants
Documentation
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);
    }
}