此问题在此处已有答案:
Reuse error message from thiserror
definition(1个答案)
17小时前关门了。
我目前正在使用官方的mongodb驱动程序进行rust,在查看mongodb的错误类型时,我在mongodb::error::Error
实现中遇到了这一行:
#[error("Kind: {kind}, labels: {labels:?}")]
这一行是什么意思?它给结构体增加了什么功能?mongodb::error::Error
结构定义如下:
use thiserror::Error;
#[derive(Clone, Debug, Error)]
#[error("Kind: {kind}, labels: {labels:?}")]
#[non_exhaustive]
pub struct Error {
/// The type of error that occurred.
pub kind: Box<ErrorKind>,
labels: HashSet<String>,
pub(crate) wire_version: Option<i32>,
#[source]
pub(crate) source: Option<Box<Error>>,
}
来源:这里
2条答案
按热度按时间g6ll5ycj1#
这是
thiserror
的 error message 属性。它们使你能够用比手工更简单的方式构造std::error::Error
trait的自定义消息的实现。你可以在链接行的上方看到Error
派生宏是在第11行导入的。链接的示例将属性宏应用于结构类型,但它也可以用于枚举变体。可以从文档本身看到使用此派生宏的另一个示例。
另见:
thiserror
definitionlqfhib0f2#
线
#[error("Kind: {kind}, labels: {labels:?}")]
是影响上一行#[derive(Error)]
的参数。它指定如何打印错误;具体来说,它为结构体实现了
Display
。参见this example: