Install Rust mode and hook in Cargo bindings.
(use-package rust-mode
:ensure t
:init (progn
(add-hook 'rust-mode-hook 'cargo-minor-mode)
(add-hook 'toml-mode-hook 'cargo-minor-mode))
:config (setq rust-format-on-save t))
Ensure that Cargo is installed.
(use-package cargo :ensure t)
Set up Racer.
(use-package racer
:ensure t
:init (progn
(setenv "PATH" (concat (getenv "PATH") ":~/.cargo/bin"))
(setq exec-path (append exec-path '("~/.cargo/bin")))
(unless (getenv "RUST_SRC_PATH")
(setenv "RUST_SRC_PATH" (expand-file-name "~/rust/src/")))
(setq racer-cmd "~/.cargo/bin/racer")
(setq racer-rust-src-path "~/rust/src/")
(add-hook 'rust-mode-hook #'racer-mode)
(add-hook 'racer-mode-hook #'eldoc-mode)
(add-hook 'racer-mode-hook #'company-mode)))
Set up Flycheck.
(use-package flycheck-rust
:ensure t
:init (progn
(add-hook 'flycheck-mode-hook #'flycheck-rust-setup)
(add-hook 'rust-mode-hook #'flycheck-mode)
(add-hook 'rust-mode-hook #'yas-minor-mode)
(add-hook 'rust-mode-hook #'flyspell-prog-mode)))
Add `cargo-process-clippy` command.
(defcom cargo-process-clippy ()
(cargo-process--start "Clippy" "cargo clippy"))
Turn on backtraces.
(setenv "RUST_BACKTRACE" "1")