Perhaps this comment is looking a bit beyond the libs blitz, but it seems like an apropos time to bring it up.
I think error chain is very good (significantly better than the status quo before error chain), but I feel slightly concerned about how its trending toward becoming the de facto solution. I suspect error chain could be even better if the problem space were examined in a lang+libs framework, instead of just a libs framework (that is, considering potential extensions to the language as well).
For example, the existence of both links and foreign_links seems inelegant to me; is there a solution based on specialization that could combine them?
Even more abstractly, if error chain is going to become “the wayto define an error in Rust,” I’d like to see a more thorough discussion of what other options were considered and discarded, what the fundamental trade offs are, etc. Maybe that discussion exists and I just haven’t read it.