Rust's language ergonomics initiative
Speaking of removing friction, there are three areas that have caused me grief when I wrote Rust code:<p>1. Error handling.  The lack of built-in support for multi-error or error union in Result is painful in dealing with different types of error in a function.  Support for Result&lt;Value, Error1 | Error2 | Error3&gt; would be helpful.  Or may be support for easily converting one type of error to another.  Now there&#x27;s lots of boiler plate code to deal with error conversion.  Error chaining would be nice, too.<p>2. Lack of stack trace when an error occurs.  Now that stacktrace starts when panic!() is called, which is kind of late.<p>3. Better support for conversion between &amp;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.<p>Edit: another item<p>4. Support of partially applied function , i.e. bind a subset of arguments to the function pointer.  Currently there&#x27;s no way to bind the self argument to the Option&#x2F;Result chaining calls.  Basically the Option&#x2F;Result chain (.and_then, .map, etc) only carries forward the value of Option&#x2F;Result and nothing else.  It would be nice put partially applied function in the chain.  e.g.  result.and_then(self.func1) where func1 has the self argument bounded.  Or in more general form, result.and_then(func1(&quot;param1&quot;, param2, _)) where func1&#x27;s first and second parameters have been bounded up front and the value of result will be passed in as the 3rd parameter.