Crates.io | http-derive-impl |
lib.rs | http-derive-impl |
version | 0.1.0 |
created_at | 2025-07-15 10:06:48.105648+00 |
updated_at | 2025-07-15 10:06:48.105648+00 |
description | Derive macro for implementing `Into |
homepage | https://github.com/popen2/http-derive-rs |
repository | |
max_upload_size | |
id | 1752921 |
size | 9,166 |
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,
}