There are a couple of crates that support this; personally, I recommend the "error-chain" crate. However, I do wish that Rust promoted the most capable of those to the standard library.
> 2. Lack of stack trace when an error occurs. Now that stacktrace starts when panic!() is called, which is kind of late.
error-chain provides that.
> 3. Better support for conversion between &str and String. Dealing with strings is so prevalent in programming that making it easier to work with the two types would be a huge boost to productivity.
Can you give some specific examples of cases you've found cumbersome?
String has a Deref instance for &str, so taking a reference to a String automatically works as a &str. You can also call .as_str().
Going in the other direction, you can call .to_string() to make a copy of a &str as a new String.