wherror 2.3.1

The same derive(Error) macro thiserror provides + the features you want!
Documentation