License Crates.io Docs.rs

sqlx-error

A wrapper around sqlx::Error to provide error path and additional context.

Usage

```rust use sqlxerror::{sqlxerror, 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).maperr(sqlxerror!())?; Ok(()) }

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

asserteq!(foo().unwraperr().tostring(), "sqlx rustout::foo, src/lib.rs:15:43"); asserteq!(bar().unwraperr().tostring(), "sqlx rustout::bar, src/lib.rs:21:43, more context"); ```

Contributing

We appreciate all kinds of contributions, thank you!

Note on README

Most of the readme is automatically copied from the crate documentation by cargo-sync-readme. This way the readme is always in sync with the docs and examples are tested.

So if you find a part of the readme you'd like to change between <!-- cargo-sync-readme start --> and <!-- cargo-sync-readme end --> markers, don't edit README.md directly, but rather change the documentation on top of src/lib.rs and then synchronize the readme with: bash cargo sync-readme (make sure the cargo command is installed): bash cargo install cargo-sync-readme

If you have [rusty-hook] installed the changes will apply automatically on commit.

License

This project is licensed under the MIT license.