2 个稳定版本
1.0.23 | 2020 年 12 月 4 日 |
---|
#63 在 #io-error
每月 79 次下载
在 2 个 crate 中使用 (通过 displaythis)
22KB
590 行
derive(Display)
此库提供了一个方便的 derive 宏,用于标准库的 std::fmt::Display
trait。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
实现相同的结果,从手动实现切换到 displaythis 或相反都不是破坏性更改。 -
类型可以是枚举、具有命名字段的 struct、元组 struct 或单元 struct。
-
你应该在 struct 或你的枚举的每个变体上提供
#[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
~35K SLoC