It seems to me that high-level, convenient, extensible, and robust error handling in Rust has always been difficult to achieve (heck, it's just a hard thing period). It's never been super clear to me if there's a "recommended" way to deal with it. Apparently there was
error-chain, and then
failure came along to replace it, but then
failure fell out of favor,
thiserror is also popular, and
error-chain has come to be maintained again.
Long and short of it is, the last error handling overhaul basically implemented a stripped down version of error-chain without dynamic typing. I'm not opposed to a little dynamic typing in error handling because it makes it so much easier to handle on the development end.
I'm working on package construction right now, partially to try out this new setup to see how well it works, and so far I like it better than the other stuff I've come up with. Once I get my package builder mostly put together and some more tests written to generate some error conditions, this will be GTM.