mrkeyoor.com_
Tue 01 Sept 17:40 UTC
Dev Toolsevaluationupdated 27 Aug 2026

rust-analyzer review

rust-analyzer is the language server that gives Rust editors completion, navigation, refactoring, formatting, and diagnostics. It separates Rust code intelligence from the editor, so VS Code, Vim, Emacs, Zed, and other LSP clients can share the same analysis engine.

+16stars / 7d
Verdict

Our rust-analyzer run passed 2,275 of 2,277 tests, but both formatting-document cases returned null after a 160-second build. It remains the sensible default for Rust code intelligence in an LSP editor because it is current, editor-neutral, and released weekly. Do not treat it as a safe viewer for unknown repositories, and pin server, toolchain, and editor integration together when consistency matters.

We ran it

Lab card: what happened when we ran rust-analyzerScreenshot of rust-analyzer (rust-analyzer.github.io)
Install✓ · 19s322 packages
Build✓ · 160s
Tests✗ · 289s2275 passed · 2 failed of 2277 (cargo test)
Repo2334 files~594,551 lines of source · 21.9 MB · 10 CI workflows

Answers from our run

Does rust-analyzer build from source?

Dependencies installed in 19 seconds (322 packages), and the build succeeded in 160 seconds. We cloned commit 5c156cd into a clean Debian container with 3 CPUs and no project-specific setup.

Do rust-analyzer's tests pass?

Not all of them: 2275 of 2277 passed and 2 failed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use rust-analyzer?

Anyone opening untrusted Rust repositories: the security guide says build scripts and procedural macros execute by default, and project config can replace tool executables.

What are the alternatives to rust-analyzer?

RustRover, Rust Language Server. Our rust-analyzer run passed 2,275 of 2,277 tests, but both formatting-document cases returned null after a 160-second build.

Setup4/5Bundled in VS Code; other editors need binary and rust-src
Docs5/5Installation, config, security, privacy, and internals are clear
Community5/5Weekly releases and active work despite a large queue
Maturity5/52,275 tests passed; two formatting cases failed in our run

Discussed on

  1. hnRust-analyzer joins the Rust organization38 points
  2. hnRust-analyzer to stabilize a new trait solver, with significant perf gains4 points

Who it’s for

Rust developers using an editor with Language Server Protocol support.
Teams that want rustc and Clippy diagnostics alongside code navigation and completion.
Editor authors who need a maintained Rust analysis server.
Compiler-tooling contributors willing to work in a large Rust workspace.

Who it’s NOT for

Anyone opening untrusted Rust repositories: the security guide says build scripts and procedural macros execute by default, and project config can replace tool executables.
Developers pinned to an old Rust toolchain who expect current analysis: only the latest stable standard-library source is officially supported.
Editors without an LSP client or a maintained rust-analyzer integration.
Contributors proposing a new IDE assist right now: CONTRIBUTING.md says assists are frozen while maintainers handle the pull-request backlog and a parser transition.
Teams that require the checked commit's suite to be fully green: our run had 2 formatting-test failures.

Setup reality

Our sandbox installed 322 Rust packages in 19 seconds and built in 160 seconds. Tests failed after 289 seconds: 2,275 passed and 2 failed of 2,277. The checkout occupied 21.9 MB before dependencies.

VS Code's extension bundles the server binary. Other editors need a downloaded binary, LSP configuration, and Rust standard-library source; rust-analyzer attempts to install that source, or rustup component add rust-src does it explicitly.

The two failures were test_format_document and test_format_document_2018. Their expected LSP edits were compared with an actual null result. The log says to rerun -p rust-analyzer --test slow-tests; it does not identify why formatting returned null.

One language server gives many editors Rust code intelligence

rust-analyzer implements the Language Server Protocol for Rust. It provides completion, go-to-definition, reference search, refactoring, formatting through rustfmt, and diagnostics through rustc and Clippy. Editors handle the interface while the server builds a semantic view of the workspace. That division lets VS Code, Vim, Emacs, Zed, and other clients use the same analysis code.

The approach works best when the editor integration tracks the server closely. LSP standardizes transport, but many rust-analyzer settings and commands are specific to the server. VS Code gets the first-party extension and a bundled binary. Other clients vary in how they install updates, send initialization options, expose commands, and display diagnostics. A problem that looks like analysis can live in the client configuration, server version, Rust toolchain, or project itself.

VS Code bundles the binary, while other editors need three pieces

The installation guide names 3 requirements: a rust-analyzer binary, an LSP-capable editor, and Rust standard-library source. VS Code's extension supplies the binary. Other editors need a release binary plus client configuration. The server tries to install standard-library source automatically; users can also run rustup component add rust-src. Only the latest stable source is officially supported.

Toolchain overrides deserve attention. A project's rust-toolchain.toml or rustup override can point analysis at an older compiler whose source current rust-analyzer may not understand. The guide suggests forcing the stable toolchain through RUSTUP_TOOLCHAIN when needed. That may improve the analyzer while differing from the project's build compiler, so verify diagnostics with the actual Cargo build before changing code based on an editor warning.

What happened when we ran it

Our sandbox installed 322 Rust packages in 19 seconds. Building commit 5c156cd took 160 seconds. The checkout held 2,334 files, roughly 594,551 lines of source, and occupied 21.9 MB. It had 10 CI workflow files, no Dockerfile, and no top-level tests directory; Rust tests are distributed through the workspace rather than requiring that directory.

Tests exited with code 101 after 289 seconds. Cargo reported 2,275 passed and 2 failed out of 2,277. The failing slow tests were test_format_document and test_format_document_2018. In the shown protocol comparison, expected text edits were present and the actual part was null. The log recommends rerunning the rust-analyzer slow-test target, but it does not say whether rustfmt, configuration, or server behavior produced the null response.

Opening an unknown repository can execute its code

The security guide says rust-analyzer assumes all code is trusted. Procedural macros and build scripts run by default. .cargo/config and rust-toolchain.toml can replace rustc with another executable, while VS Code workspace configuration can override paths such as rustfmt or rust-analyzer itself. The syntax-tree library also uses substantial unsafe Rust and has not received a full memory-safety audit, according to the same page.

This makes rust-analyzer unsuitable as a passive viewer for a repository from an unknown sender. Review workspace files before opening the folder in a fully enabled editor, and use a disposable environment when inspection requires analysis. Disabling one feature does not close every execution path listed by the maintainers. The warning is unusually direct, and teams should incorporate it into code-review and incident-response instructions.

Privacy is local until Cargo and project code reach the network

The LSP server itself performs no network access, according to the privacy guide. It runs cargo metadata, which can update or download registry data and project dependencies. Enabled build scripts and procedural macros can then do anything allowed by the user account. The first-party Code extension also states that it does not access the network; third-party editor plugins have their own policies.

That distinction matters on proprietary workspaces and isolated build machines. A local server process does not guarantee an offline session when Cargo resolves dependencies. Pre-populate registries, use locked dependency state, control proxy access, and inspect the editor plugin separately if network policy matters. For strict isolation, test startup with network disabled and watch the logs rather than relying on the absence of telemetry claims.

Weekly releases move faster than every editor and toolchain

Release 2026-08-24, also numbered v0.3.3025, was published on August 24. It added one diagnostic, reduced token-tree storage by 32 MB on the project itself, fixed several parser and layout cases, and adjusted release machinery. GitHub showed 16,797 stars, 1,794 combined issues and pull requests, and a last push on August 27, 2026.

That queue is large, and CONTRIBUTING.md currently freezes new IDE assists while maintainers address pull requests and prepare a rowan transition. The freeze does not imply inactivity; releases and fixes are arriving. It does mean a missing refactoring may not be accepted soon. For most users, the right move is to take the editor's supported rust-analyzer channel, keep rust-src current, and upgrade after checking workspace-specific diagnostics and formatting.

Two failed formatting cases call for a local smoke test

The measured suite was close to clean, with 2 failures among 2,277 tests. Both touched document formatting, a visible workflow where client, server, and rustfmt must agree. Before a team-wide rollout, format a file in each supported Rust edition, confirm the diff, and verify that save-time formatting and explicit formatting use the intended executable.

rust-analyzer is still the default recommendation for Rust in an LSP editor. Its 160-second source build is mostly a contributor concern because many users receive a binary through their editor. The operational concerns are trust, version alignment, and client behavior. Keep unknown repositories isolated, pair the server with a supported stable toolchain, and treat Cargo output as the final authority when editor diagnostics disagree.

Alternatives

ProjectWhat it isPick it when
RustRoverJetBrains' dedicated Rust IDE packages editor, debugger, project model, and code intelligence together.pick this instead when you want an integrated IDE and are comfortable choosing a JetBrains product over an editor-neutral server.
Rust Language ServerRust's previous language server, now kept in an archived repository.pick this instead only when maintaining a legacy setup that cannot move to rust-analyzer and accepts an archived codebase.

What people are saying

  1. [github-trending] rust-lang/rust-analyzer

Sources

  1. rust-analyzer README
  2. rust-analyzer installation guide
  3. rust-analyzer security guide
  4. rust-analyzer privacy guide
  5. rust-analyzer 2026-08-24 release

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →