#+TITLE: Rust contribution layer for Spacemacs #+HTML_HEAD_EXTRA: [[file:img/rust.png]] * Table of Contents :TOC_4_org:noexport: - [[Description][Description]] - [[Install][Install]] - [[Layer][Layer]] - [[Racer][Racer]] - [[Cargo][Cargo]] - [[Rustfmt][Rustfmt]] - [[Key bindings][Key bindings]] * Description This layer supports [[http://www.rust-lang.org/][Rust]] development in Spacemacs. It has auto-completion and navigation support through [[https://github.com/phildawes/racer][Racer]] and supports [[http://doc.crates.io/index.html][Cargo]]. * Install ** Layer To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =rust= to the existing =dotspacemacs-configuration-layers= list in this file. ** Racer You must install [[https://github.com/phildawes/racer][Racer]] to use this. Make sure the =racer= binary is available in your =PATH= and to set the environment variable =RUST_SRC_PATH=, as described in the [[https://github.com/phildawes/racer#installation][installation instructions]]. To enable auto-completion, ensure that the =auto-completion= layer is enabled. ** Cargo [[http://doc.crates.io/index.html][Cargo]] is a project management command line tool for Rust. Installation instructions can be found on the main page of [[http://doc.crates.io/index.html][Cargo]]. ** Rustfmt Format Rust code according to style guidelines using [[https://github.com/rust-lang-nursery/rustfmt][rustfmt]]. #+BEGIN_SRC sh cargo install rustfmt #+END_SRC To enable automatic buffer formatting on save, set the variable =rust-enable-rustfmt-on-save= to =t=. #+BEGIN_SRC emacs-lisp (setq-default dotspacemacs-configuration-layers '( (rust :variables rust-enable-rustfmt-on-save t))) #+END_SRC * Key bindings | Key Binding | Description | |-------------+-----------------------------------| | ~SPC m c c~ | compile project with Cargo | | ~SPC m c t~ | run tests with Cargo | | ~SPC m c d~ | generate documentation with Cargo | | ~SPC m c x~ | execute the project with Cargo | | ~SPC m c C~ | remove build artifacts with Cargo | | ~SPC m g g~ | jump to definition | | ~SPC m =~ | reformat the buffer |