2 个稳定版本
1.0.23 | 2020 年 12 月 4 日 |
---|
#1273 在 Rust 模式
96 每月下载次数
用于 osrm_client
14KB
87 行
derive(显示)
此库提供了一个方便的 derive 宏,用于标准库的 std::fmt::Display
特性。displaythis 是 thiserror 的一个分支,已修改以支持非错误类型。
示例
# use std::io;
use displaythis::Display;
#[derive(Display, Debug)]
pub enum DataStoreError {
#[display("data store disconnected")]
Disconnect(io::Error),
#[display("the data for key `{0}` is not available")]
Redaction(String),
#[display("invalid header (expected {expected:?}, found {found:?})")]
InvalidHeader {
expected: String,
found: String,
},
#[display("unknown data store error")]
Unknown,
}
详细信息
-
displaythis 故意不在您的公共 API 中出现。您将获得与手动编写
std::fmt::Display
实现相同的结果,并且从手写 impl 切换到 displaythis 或反之亦然不是破坏性更改。 -
类型可以是枚举、具有命名字段的元组结构体、元组结构体或单元结构体。
-
您应该在结构体或枚举的每个变体上提供
#[display("...")]
消息,如示例中所示。这些消息支持从错误中插值字段的简写。
#[display("{var}")]
⟶write!("{}", self.var)
#[display("{0}")]
→write!("{}", self.0)
#[display("{var:?}")]
→write!("{:?}", self.var)
#[display("{0:?}")]
→write!("{:?}", self.0)
这些简写可以与任何额外的格式参数一起使用,这些参数可以是任意表达式。例如
#[derive(Display, Debug)] pub enum Error { #[display("invalid rdo_lookahead_frames {0} (expected < {})", i32::MAX)] InvalidLookahead(u32), }
如果额外的表达式参数需要引用结构体或枚举的字段,那么请按名称字段引用
.var
,并按元组字段引用.0
。#[derive(Display, Debug)] pub enum Error { #[display("first letter must be lowercase but was {:?}", first_char(.0))] WrongCase(String), #[display("invalid index {idx}, expected at least {} and at most {}", .limits.lo, .limits.hi)] OutOfBounds { idx: usize, limits: Limits }, }
许可证
根据您的选择,受Apache许可证,版本2.0或MIT许可证的许可。除非您明确声明,否则根据Apache-2.0许可证的定义,您提交的任何有意包含在此软件包中的贡献,都将按上述方式双重许可,不附加任何额外的条款或条件。
依赖项
~1.5MB
~34K SLoC