| Crates.io | http-derive |
| lib.rs | http-derive |
| version | 0.1.2 |
| created_at | 2025-07-15 10:06:56.670169+00 |
| updated_at | 2025-09-23 09:35:58.933937+00 |
| description | Derive macro for implementing `Into |
| homepage | https://github.com/popen2/http-derive-rs |
| repository | |
| max_upload_size | |
| id | 1752922 |
| size | 8,578 |
Derive macro for implementing Into<http::StatusCode> for your enums using the standard http types.
http::StatusCode.http 0.2 and/or 1.0 using feature flags.thiserror.enum instead of manually impl From<X> for http::StatusCode.By default this crate enables no features. This is to allow selecting which http crate/s are selected.
If your crate has to enable http support conditionally you can leave the [#derive(HttpStatus)] in place and turn on one or more of the features below depending on your crate's feature flags.
http-1 enables http = "1"http-02 enables http = "0.2"For example, in Cargo.toml add:
http-derive = { version = "0.1.0", features = ["http-1"] }
use http_derive::HttpStatus;
#[derive(Debug, HttpStatus, thiserror::Error)]
pub enum MyError {
#[error("This is not supported")]
#[http(status = "BAD_REQUEST")]
Unsupported,
#[error("Try again")]
#[http(status = "SERVICE_UNAVAILABLE")]
TryAgain,
#[error(transparent)]
#[http(transparent)]
Sub(MySubError),
}
#[derive(Debug, HttpStatus, thiserror::Error)]
pub enum MySubError {
#[error("Unauthorized")]
#[http(status = "UNAUTHORIZED")]
Unauthorized,
#[error("Unauthorized")]
#[http(status = "UNAUTHORIZED")]
EvenMoreUnauthorized,
}