RACER = Rust Auto-Complete-er. A utility intended to provide Rust code completion for editors and IDEs. Maybe one day the 'er' bit will be exploring + refactoring or something.
Racer is not actively developped now. Please consider using newer software such as rust-analyzer.
NOTE From 2.1, racer needs nightly rust
If you're using rustup, run
rustup toolchain install nightly rustup component add rustc-dev --toolchain=nightly
Note: The second command adds the
rustc-dev component to the nightly
toolchain, which is necessary to compile Racer.
Internally, racer calls cargo as a CLI tool, so please make sure cargo is installed
cargo +nightly install racer
As mentioned in the command output, don't forget to add the installation directory to your
Clone the repository:
git clone https://github.com/racer-rust/racer.git
cd racer; cargo +nightly build --release. The binary will now be in
Add the binary to your
PATH. This can be done by moving it to a directory already in your
/usr/local/bin) or by adding the
./target/release/directory to your
Fetch the Rust sourcecode
automatically via rustup and run
rustup component add rust-srcin order to install the source to
$(rustc --print sysroot)/lib/rustlib/src/rust/library(or
$(rustc --print sysroot)/lib/rustlib/src/rust/srcin older toolchains). Rustup will keep the sources in sync with the toolchain if you run
manually from git: https://github.com/rust-lang/rust
If you want to use
racerwith multiple release channels (Rust has 3 release channels:
nightly), you have to also download Rust source code for each release channel you install.
e.g. (rustup case) Add a nightly toolchain build and install nightly sources too
rustup toolchain add nightly
rustup component add rust-src
RUST_SRC_PATHenvironment variable to point to the 'src' dir in the Rust source installation e.g.
% export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/libraryor
% export RUST_SRC_PATH="$(rustc --print sysroot)/lib/rustlib/src/rust/src"(older)
It's recommended to set
RUST_SRC_PATHfor speed up, but racer detects it automatically if you don't set it.
Test on the command line:
racer complete std::io::B(should show some completions)
To complete names in external crates, Racer needs
So, when you add a dependency in your
Cargo.toml, you have to run a build command
cargo build or
cargo test, to get completions.
Racer is used as a static library in RLS
Emacs integration has been moved to a separate project: emacs-racer.
Gedit integration can be found here.
Gnome Builder integration can be found here
Enable 'Rust code completion' in the plugin list in the Kate config dialog;
On the new 'Rust code completion' dialog page, make sure 'Racer command' and 'Rust source tree location' are set correctly.
The Sublime Text community maintains some packages that integrates Racer
- RustAutoComplete that offers auto completion and goto definition.
- AnacondaRUST from the anaconda plugins family that offers auto completion, goto definition and show documentation
Vim integration has been moved to a separate project: vim-racer.
Racer recommends the official
Rust (rls) extension based on RLS, which uses Racer for completion.
You can find the racer package for Atom here
Kakoune comes with a builtin integration for racer auto completion.