#error #error-context #sqlx #path #query #debugging #error-handling

sqlx-error

sqlx::Error 的包装,以提供错误路径和附加上下文

6 个版本 (破坏性更新)

0.5.0 2024年7月24日
0.4.0 2023年9月5日
0.3.0 2023年9月5日
0.2.0 2023年7月24日
0.1.1 2023年6月11日

#420文件系统

Download history 3/week @ 2024-05-03 13/week @ 2024-05-10 13/week @ 2024-05-17 9/week @ 2024-05-24 3/week @ 2024-05-31 32/week @ 2024-06-07 47/week @ 2024-06-14 30/week @ 2024-06-21 24/week @ 2024-06-28 8/week @ 2024-07-05 24/week @ 2024-07-12 112/week @ 2024-07-19 82/week @ 2024-07-26 7/week @ 2024-08-02 6/week @ 2024-08-09 5/week @ 2024-08-16

每月下载量 128

MIT 协议

6KB

License Crates.io Docs.rs

sqlx-error

sqlx::Error 的包装,以提供错误路径和附加上下文。

用法

use sqlx_error::{sqlx_error, SqlxError};

#[derive(Debug, thiserror::Error)]
pub enum MyError {
    #[error(transparent)]
    Sqlx(#[from] SqlxError),
}

/// If you have a single sqlx query per function, the function path by itself could provide
/// enough context
fn foo() -> Result<(), MyError> {
    Err(sqlx::Error::RowNotFound).map_err(sqlx_error!())?;
    Ok(())
}

/// Or you can add more context
fn bar() -> Result<(), MyError> {
    Err(sqlx::Error::RowNotFound).map_err(sqlx_error!("more context"))?;
    Ok(())
}

assert_eq!(foo().unwrap_err().to_string(), "sqlx rust_out::foo, src/lib.rs:15:43");
assert_eq!(bar().unwrap_err().to_string(), "sqlx rust_out::bar, src/lib.rs:21:43, more context");

贡献

我们感激所有形式的贡献,谢谢!

关于 README 的说明

大部分的 README 是通过 cargo-sync-readme 自动从 crate 文档中复制而来。这样 README 总是与文档保持同步,并且示例已过测试。

所以如果你想在 <!-- cargo-sync-readme start --><!-- cargo-sync-readme end --> 标记之间更改 README 的一部分,请不要直接编辑 README.md,而是更改 src/lib.rs 上的文档,然后通过以下命令同步 README:

cargo sync-readme

(确保已安装 cargo 命令)

cargo install cargo-sync-readme

如果你已安装 rusty-hook,则更改将在提交时自动应用。

许可证

本项目采用 MIT 许可证

依赖项

~8.5MB
~175K SLoC