Make it compile on 1.35 again
Make it compile on 1.35 again

This is the version used on CI right now. Seemed unnecessary to break
it. The problem was that converting `&String -> String` was only
recently added to the std lib. The change here also removes the cloning
of the input string, which is a nice benefit.

This also taught me an interesting thing about Snafu's "context
selectors", i.e., the custom types Snafu generates for each of the enum
variants. They implement a few useful methods/traits that are only
alluded to in the [docs]:

- `.fail()` will transform the type into an instance of the enum it
  originally came from, (also adds the backtrace if necessary)
- `.into_error(source)` does the same but also allows specifying the
  source (thus it is only available on variants that have a source
  field).

[docs]: https://docs.rs/snafu/0.5.0/snafu/guide/the_macro/index.html

bbqsrc/kbdgen