#context #docs #failure #error #macro

context-attribute

使用文档注释设置错误上下文

1 个稳定版本

1.0.0 2019年5月9日

#2400 in 开发工具

MIT/Apache

12KB
50

context-attribute

crates.io version build status downloads docs.rs docs

使用文档注释设置错误 context

这非常有用,因为它不需要手动编写错误消息来提供错误上下文,而是自动从文档注释中推导出来。这对于异步上下文特别有效,因为堆栈跟踪可能在让步点和线程边界之后无法保留,而上下文则可以。

示例

use context_attribute::context;
use failure::{ensure, ResultExt};

/// Square a number if it's less than 10.
#[context]
fn square(num: usize) -> Result<usize, failure::Error> {
    ensure!(num < 10, "Number was too large");
    Ok(num * num)
}

fn main() -> Result<(), failure::Error> {
    let args = std::env::args();
    ensure!(args.len() == 2, "usage: square <num>");
    let input = args.skip(1).next().unwrap().parse()?;

    println!("result is {}", square(input)?);

    Ok(())
}
$ cargo run --example square 12
Error: ErrorMessage { msg: "Number was too large" }
Square a number if it's less than 10.

安装

$ cargo add context-attribute

安全性

此 crate 使用 #![deny(unsafe_code)] 来确保所有内容都在 100% 安全的 Rust 中实现。

贡献

想要加入我们?查看我们的 "贡献" 指南 并查看一些这些问题

参考文献

无。

许可证

MIT OR Apache-2.0

依赖

~2MB
~47K SLoC