#display #derive #docs #traits #string-interpolation #comments #macro

无std displaydoc-watt

通过文档注释和字符串插值实现display Trait的derive宏

1个不稳定发布

0.1.0 2019年11月21日

#2330Rust模式

MIT/Apache

670KB
293

derive(Display) /// From<docs>

Latest Version Rust Documentation

此库提供了一个方便的derive宏,用于实现标准库的core::fmt::Display trait。

[dependencies]
displaydoc-watt = "0.1"

编译器支持:需要rustc 1.34+


示例

use displaydoc_watt::Display;
use thiserror::Error;

#[derive(Display, Error, Debug)]
pub enum DataStoreError {
    /// data store disconnected
    Disconnect(#[source] io::Error),
    /// the data for key `{0}` is not available
    Redaction(String),
    /// invalid header (expected {expected:?}, found {found:?})
    InvalidHeader {
        expected: String,
        found: String,
    },
    /// unknown data store error
    Unknown,
}

详情

  • 如果为结构体或枚举的每个变体提供文档注释消息,将为您生成类型上的Display实现,如示例中所示。

    消息支持从错误中插值字段的简写。

    • /// {var}write!("{}", self.var)
    • /// {0}write!("{}", self.0)
    • /// {var:?}write!("{:?}", self.var)
    • /// {0:?}write!("{:?}", self.0)

常见问题解答

  1. 这个crate是否兼容no_std

    • 目前,主要的 displaydoc 包不支持 no_std,但我还没有弄清楚如何在将进程宏编译为 wasm 时使其工作。
  2. 这个包是否通过 Display 特性与 PathPathBuf 一起工作?

    • 是的。这个包使用 @dtolnay 的 自动引用专用技术 为类型添加一个特殊的特性以获取显示实现,然后针对 PathPathBuf 进行专门化,当找到这两种类型之一时,它调用 self.display() 以获取一个 std::path::Display<'_> 类型,该类型可用于与 Display 格式说明符一起使用!

许可证

根据您的选择,在 Apache License, Version 2.0 或 MIT 许可证下获得许可。
除非您明确说明,否则根据 Apache-2.0 许可证定义的,您有意提交给本包的贡献将如上所述双重许可,不附加任何其他条款或条件。

依赖项