Macro problem

Source
macro_rules! problem {
    (
        "status": $status:expr 
        $(, $key:tt : $value:tt)* 
        $(,)?
    ) => { ... };
    (
        "type": $type:expr,
        "status": $status:expr 
        $(, $key:tt : $value:tt)* $(,)?
    ) => { ... };
    (
        "title": $title:expr,
        "status": $status:expr 
        $(, $key:tt : $value:tt)* $(,)?
    ) => { ... };
    (
        "type": $type:expr,
        "title": $title:expr,
        "status": $status:expr 
        $(, $key:tt : $value:tt)* $(,)?
    ) => { ... };
}
Expand description

Produces an error response in a Problem Details format

ยงExample

let problem_details = problem! {
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
    "title": "Bad Request",
    "status": 400,
    "details": "Your request parameters didn't validate.",
    "instance": "/some/resource/path",
    "invalid-params": [
        { "name": "id", "reason": "Must be a positive integer" }
    ]
};