# status
> `Status`: An `Error` container for Rust.
[](https://travis-ci.org/epage/status)
[](https://crates.io/crates/status)
[][Documentation]

An `Error` container lowers the overhead for reporting the status via `Result<_, E>`.
Unlike the error-wrapping pattern found in `cargo` and generalized in `anyhow`, the pattern
implemented in `Status` comes from some proprietary C++ projects which try to address the
following requirements:
- Programmatically respond to both the `Kind` of status and the metadata, or `Context`, of
the status.
- Dealing with error-sites not knowing enough to describe the error but allowing the
`Context` to be built gradually when unwinding and a function has relevant information to
add.
- Localizing the rendered message.
- Allowing an application to make some phrasing native to its UX.
- Preserving all of this while passing through FFI, IPC, and RPC.
These requirements are addressed by trading off some usability due to having a more
cookie-cutter approach to error messages. The `Kind` serves as a static description of the
error that comes from a general, fixed collection. Describing the exact problem and tailored
remediation is the responsibility of the `Context` which is generally key-value pairs.
For more, see [docs.rs/status][Documentation].
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the
Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.
[Documentation]: https://docs.rs/status