Rust has an unfortunate syntax for setting attributes on a module file:
```rust
#![...]
```
Since this is typically put at the top of the file, that makes the
shebang the first two characters, which makes the `after-save-hook`
function `executable-make-buffer-file-executable-if-script-p` function
change any such rust files executable.
`with-eval-after-load` was introduced in Emacs 24.4 and its
usage results in a cleaner code.
`eval-after-load` is considered ill-behaved because it is a function,
not a macro, and thus requires the code inside it to be quoted, which
means that it cannot be byte-compiled. It also accepts only one form,
so if you have more than one, you need to use `progn`.
More details - https://stackoverflow.com/questions/21880139/what-is-with-eval-after-load-in-emacs-lisp
The module uses the following packages:
* rust-mode (general utilities for rust development)
* flycheck-rust (syntax checking)
* cargo (keybinding as minor-mode for using cargo package manager)
* racer (wrapper for the race code completion tool using company-mode)