Provides a highly detailed error type designed for:
- Compilers (or anything similar)
- Tracebacks
- Any situation where a source file would provide valuable context for the user
This serves as a sort of wrapper around [`ariadne`], although it is missing much of
[`ariadne`]'s functionality. The point is to have a simple interface for constructing error
reports that works well enough for sufficiently simple applications.
As a word of caution, this higher level of detail comes at the cost of higher memory usage. The
`RichError` `struct` alone is around 7 times larger than a [`String`], and some features may incur
extra heap allocations as well. Thus, it is not advisable to use rich errors unless an ordinary
error is truly insufficient.
[`ariadne`]: https://docs.rs/ariadne/latest/ariadne/
[`String`]: https://doc.rust-lang.org/std/string/struct.String.html