#anyhow #error #async #handling

async-anyhow-logger

一个简单的crate,用于从异步函数中捕获anyhow错误,并将它们传递给您的日志记录器

1 个不稳定版本

0.1.0 2021年2月20日

#1037 in 异步


用于 peshming

MIT/Apache

6KB

async-anyhow-logger

async-anyhow-logger 是一个crate,可以轻松记录在异步函数中发生的错误,例如通过 tokio::spawn

示例

use anyhow::{Context, Result};
use async_anyhow_logger::catch_context;

pub async fn erroring_async_function() -> Result<()> {
	Err(std::io::Error::new(std::io::ErrorKind::Other, "Oh no! An error!").into())
}

pub async fn multi_erroring_async_function() -> Result<()> {
	erroring_async_function()
		.await
		.context("Oh no! Another error!")
}

#[tokio::main]
async fn main() {
	pretty_env_logger::init();
	tokio::spawn(catch_context(
		"my async function errored",
		erroring_async_function(),
	));
	tokio::spawn(catch_context(
		"more complicated async function errored",
		multi_erroring_async_function(),
	));
	tokio::time::sleep(std::time::Duration::from_secs(5)).await;
}

此示例还位于 examples/basic.rs,可以使用 cargo run --example basic 运行。

许可证

根据您的选择,受Apache License, Version 2.0MIT许可证的许可。

除非您明确声明,否则您有意提交以包含在此crate中的任何贡献,根据Apache-2.0许可证定义,应如上所述双重许可,没有任何附加条款或条件。

依赖项

~0.8–1MB
~19K SLoC