enum-status-code 0.1.0

Allows attaching status codes to enums
Documentation
use enum_status_code::{AsStatusCode, status_code};
use http::StatusCode;

#[test]
pub fn test_non_default() {
    #[status_code]
    pub enum Error {
        #[code(StatusCode::NOT_FOUND)]
        NotFound,
        #[code(StatusCode::INTERNAL_SERVER_ERROR)]
        InternalServerError,
    }

    assert_eq!(Error::NotFound.as_status_code(), StatusCode::NOT_FOUND);
    assert_eq!(
        Error::InternalServerError.as_status_code(),
        StatusCode::INTERNAL_SERVER_ERROR
    );
}

#[test]
pub fn test_default() {
    #[status_code(StatusCode::INTERNAL_SERVER_ERROR)]
    pub enum Error {
        #[code(StatusCode::NOT_FOUND)]
        NotFound,
        InternalServerError,
    }

    assert_eq!(Error::NotFound.as_status_code(), StatusCode::NOT_FOUND);
    assert_eq!(
        Error::InternalServerError.as_status_code(),
        StatusCode::INTERNAL_SERVER_ERROR
    );
}

#[cfg(test)]
fn get_status_code(_: &TestCallError) -> StatusCode {
    return StatusCode::NOT_FOUND;
}

#[status_code]
pub enum TestCallError {
    #[code(get_status_code(self))]
    NotFound,
}

#[test]
pub fn test_call() {
    assert_eq!(
        TestCallError::NotFound.as_status_code(),
        StatusCode::NOT_FOUND
    );
}