blob: 37d6fbd6437802e46c9f79330d581673a11cbafb [file] [log] [blame] [view]
# Tips and tricks for a nice Rust development experience
## Using VSCode
1. Ensure you're using the `rust-analyzer` extension for VSCode, rather than
earlier forms of Rust support.
1. Run `gn` with the `--export-rust-project` flag, such as:
`gn gen out/Release --export-rust-project`.
1. `ln -s out/Release/rust-project.json rust-project.json`
1. When you run VSCode, or any other IDE that uses
[rust-analyzer](https://rust-analyzer.github.io/) it should detect the
`rust-project.json` and use this to give you rich browsing, autocompletion,
type annotations etc. for all the Rust within the Chromium codebase.
1. Point rust-analyzer to the rust toolchain in Chromium. Otherwise you will
need to install Rustc in your system, and Chromium uses the nightly
compiler, so you would need that to match. Add the following to
`.vscode/settings.json` in the Chromium checkout (e.g.
`chromium/src/.vscode/settings.json`; create the subdirectory and file if
they do not already exist):
```
{
// The rest of the settings...
"rust-analyzer.cargo.extraEnv": {
"PATH": "../../third_party/rust-toolchain/bin:$PATH",
}
}
```
This assumes you are working with an output directory like `out/Debug` which
has two levels; adjust the number of `..` in the path according to your own
setup.
## Suppressing unused code warnings
We don't want to commit Rust code with unused variables,
but work-in-progress changes often temporarily have unused code.
The following options exist for dealing with unused code warnings:
* Avoid warnings by prefixing
unused variables, parameters, and other APIs
with an underscore character
(e.g. using `_foo` rather than `foo` as the name).
* Temporarily insert `#![allow(unused)] /* DO NOT
SUBMIT */` at the top of the affected `.rs` files.
- See `rustc -W help` for a list of warnings covered by the `unused` group
of warnings.
- You can also use `#![warn(...)]` to still see the warnings, but avoid
treating them as errors.
* Locally set `treat_warnings_as_errors = false` in your `args.gn`.
This will affect all Rust and C/C++ warnings.