[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
关键点:
注释中的数据注入到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,
}