This module adds support for the Rust language and integration for its tools,
e.g. cargo
.
- Code completion (doom-package:racer or an LSP server)
- Syntax checking (doom-package:flycheck)
- LSP support (for rust-analyzer and rls) (doom-package:rustic)
- Snippets
- @hlissner
Become a maintainer?
- +lsp
-
Enable LSP support for
rustic-mode
. Requires doom-module::tools lsp and a langserver (supports rust-analyzer and rls). - +tree-sitter
- Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.
- doom-package:rustic
- rustic has been modified not to automatically install lsp-mode or eglot if they’re missing. Doom expects you to have enabled the doom-module::tools lsp module yourself.
This module does not have a changelog yet.
Enable this module in your doom!
block.
This module requires a working installation of Rust for its more advanced features, and offer only syntax highlighting otherwise. The simplest way to install it is through rustup:
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# And can be updated later with:
$ rustup update --no-self-update
To install and manage Rust on Windows, consult Rust’s official documentation.
Once installed, I recommended that you add Cargo’s executable to your
$PATH
, so that the Emacs utilities that depend on it – or any tools installed through it – can easily locate them (without any added configuration on your part).Also, if you have used
$ doom env
in the past, changes to your$PATH
won’t be visible to Doom until you run it (or$ doom sync
) again.
- If doom-module::editor format is enabled, you’ll need
rustfmt
:$ rustup component add rustfmt
. - Users with doom-module:+lsp enabled will need rust-analyzer (rls is supported, but deprecated).
- Using the following commands requires:
cargo-process-check
:$ cargo install cargo-check
cargo-process-clippy
:$ rustup component add clippy-preview
This module’s usage documentation is incomplete. Complete it?
This module supports rust-analyzer (RLS too, but it is deprecated), which must be installed outside of Emacs, typically with rustup or your OS package manager.
Installation through rustup is simplest:
$ rustup component add rust-analyzer rust-src
If your needs are more complex, consult rust-analyzer’s documentation.
Finally, enable Doom’s doom-module::tools lsp module, and this module’s doom-module:+lsp flag (how to enable modules and their flags), and you’re good to go!
Enable doom-module::editor format +onsave to get formatting on save with
rustfmt
. No additional configuration is necessary.
Binding | Description |
---|---|
<localleader> b a | cargo audit |
<localleader> b b | cargo build |
<localleader> b B | cargo bench |
<localleader> b c | cargo check |
<localleader> b C | cargo clippy |
<localleader> b d | cargo doc |
<localleader> b n | cargo update |
<localleader> b o | cargo outdated |
<localleader> b r | cargo run |
<localleader> t a | cargo test |
<localleader> t t | run current test |
This module’s configuration documentation is incomplete. Complete it?
Doom’s doom-module::tools lsp module has an doom-module:+eglot flag. Enable it and this module will use eglot instead.
Report an issue?
You may be seeing this error, despite having edition = "2018"
in your
Cargo.toml
. This error actually originates from rustfmt
, which the LSP
server tries to invoke on save (if you have rustic-format-trigger
or <a href=”doom-module::editor
format”>doom-module::editor
format enabled).
To fix this your project needs a rustfmt.toml
with edition = "2018"
in it.
This module has no FAQs yet. Ask one?
This module has no appendix yet. Write one?