Rust's error messages can refer to multiple parts of code, and include increasing amounts of prose: https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-come.html looks promising!
miniblog.
Related Posts
It feels like a mature software project is one where bugs require multiple commits to fix.
You've hammered out the basic issues, so the remaining issues are often weird interactions between components.
It took me way too long to realise that Arc<Mutex<T>> is basically a way to create multiple &mut T references (with runtime constraints).
This means that you can use plain &T and &mut T in the vast majority of your code. Most code doesn't need to care there's a mutex.
It is remarkably hard to escape command line arguments safely on Windows, and the standard libraries of multiple languages have needed patching: