[Rust] RustDoc宏 为Salvo框架增加状态错误码

Salvo Rust Doc 显示了202 Accepted [RFC7231, Section 6.3.3] 有错误号 注释 与http错误状态链接

对应 Pull Request

动机

http Rust Doc 给出了404 具体的描述错误. 现在将http错误码复制到salvo项目实现同样的rustdoc显示效果

源码 具体实现:行330.

macro_rules! status_codes {
        (
            $(
                $(#[$docs:meta])*
                ($num:expr, $konst:ident, $phrase:expr);
            )+
        ) => {
            impl StatusCode {
            $(
                $(#[$docs])*
                pub const $konst: StatusCode = StatusCode(unsafe { NonZeroU16::new_unchecked($num) });
            )+

            }

            fn canonical_reason(num: u16) -> Option<&'static str> {
                match num {
                    $(
                    $num => Some($phrase),
                    )+
                    _ => None
                }
            }
        }
    }

实现salvo的 rustdoc错误码具体显示

default_errors! {
            /// 400 Bad Request
            /// [[RFC7231, Section 6.5.1](https://tools.ietf.org/html/rfc7231#section-6.5.1)]
            bad_request,                        StatusCode::BAD_REQUEST,            "Bad Request", "The request could not be understood by the server due to malformed syntax.";
            /// 401 Unauthorized
关键点:
$(#[$docs:meta])*

注释中的数据注入到meta中 meta也就是元信息.

$(#[$docs])*

这里的docs为上面meta注入的信息 是上文 /// 400 Bad Request 那2行

[doc=concat!($brief,\"\n \")]

下文中第四个参数brief 也就是 ""The request could not be" 在RustDocs里显示

最后RustDoc效果: 400 Bad Request [RFC7231, Section 6.5.1]
macro_rules! default_errors {
    (
        $(
            $(#[$docs:meta])* //
            $sname:ident, $code:expr, $name:expr, $brief:expr);
        +) =>
    {
        $(
            #[doc=concat!($brief,"\n ")]     // 第四个参数brief  也就是 ""The request could not be" 在rustdocs里显示
            $(#[$docs])*                    // 这里的docs为上面meta注入的信息 展示出来 也就是 /// 400 Bad Request 那2行
            pub fn $sname() -> StatusError {
                StatusError {
                    code: $code,

}