2 个稳定版本

1.0.23 2020 年 12 月 4 日

#1273Rust 模式

Download history 17/week @ 2024-03-15 15/week @ 2024-03-22 57/week @ 2024-03-29 17/week @ 2024-04-05 5/week @ 2024-04-12 13/week @ 2024-04-19 31/week @ 2024-04-26 17/week @ 2024-05-03 29/week @ 2024-05-10 11/week @ 2024-05-17 16/week @ 2024-05-24 27/week @ 2024-05-31 28/week @ 2024-06-07 27/week @ 2024-06-14 28/week @ 2024-06-21 6/week @ 2024-06-28

96 每月下载次数
用于 osrm_client

MIT/Apache

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.0MIT许可证的许可。
除非您明确声明,否则根据Apache-2.0许可证的定义,您提交的任何有意包含在此软件包中的贡献,都将按上述方式双重许可,不附加任何额外的条款或条件。

依赖项

~1.5MB
~34K SLoC