<div align="center">
<img src="https://raw.githubusercontent.com/microsoft/oxidizer/refs/heads/main/logo.svg" alt="Ohno Macros Impl Logo" width="96">
# Ohno Macros Impl
[](https://crates.io/crates/ohno_macros_impl)
[](https://docs.rs/ohno_macros_impl)
[](https://crates.io/crates/ohno_macros_impl)
[](https://github.com/microsoft/oxidizer/actions/workflows/main.yml)
[](https://codecov.io/gh/microsoft/oxidizer)
[](https://github.com/microsoft/oxidizer/blob/main/LICENSE)
<a href="https://github.com/microsoft/oxidizer"><img src="https://raw.githubusercontent.com/microsoft/oxidizer/refs/heads/main/logo.svg" alt="This crate was developed as part of the Oxidizer project" width="20"></a>
</div>
Implementation of the procedural macros for the [`ohno`][__link0] crate.
This crate holds the logic behind:
* `#[derive(Error)]` - Automatically implement error traits
* `#[enrich_err("message")]` - Add error enrichment with file/line information to function errors
* `#[ohno::error]` - Turn a plain struct into an error type
**Do not depend on this crate directly.** Use the re-exports from `ohno` instead.
<hr/>
<sub>
This crate was developed as part of <a href="https://github.com/microsoft/oxidizer">The Oxidizer Project</a>. Browse this crate's <a href="https://github.com/microsoft/oxidizer/tree/main/crates/ohno_macros_impl">source code</a>.
</sub>
[__link0]: https://docs.rs/ohno