A Rust compiler front-end for IDEs
Find a file
bors 9ede76bcdf Auto merge of #146376 - durin42:dwo-specify-path, r=davidtwco
debuginfo: add an unstable flag to write split DWARF to an explicit directory

Bazel requires knowledge of outputs from actions at analysis time, including file or directory name. In order to work around the lack of predictable output name for dwo files, we group the dwo files in a subdirectory of --out-dir as a post-processing step before returning control to bazel. Unfortunately some debugging workflows rely on directly opening the dwo file rather than loading the merged dwp file, and our trick of moving the files breaks those users. We can't just hardlink the file or copy it, because with remote build execution we wouldn't end up with the un-moved file copied back to the developer's workstation. As a fix, we add this unstable flag that causes dwo files to be written to a build-system-controllable location, which then lets bazel hoover up the dwo files, but the objects also have the correct path for the dwo files.

r? `@davidtwco`
2025-09-29 15:06:55 +00:00
.cargo fix: Fix generated markers not being patchable in package.json 2024-06-08 12:54:43 +02:00
.github Use GH app for authenticating sync PRs 2025-07-29 10:07:27 +02:00
.vscode feat: use vscode log format for client logs 2024-07-27 21:43:35 -07:00
assets Automatically change text color in logo based on dark mode 2022-03-06 23:06:53 +11:00
bench_data chore: Bump Edition::CURRENT to 2024 2025-03-17 12:29:19 +01:00
crates remove explicit deref of AbiAlign for most methods 2025-09-28 15:02:14 -07:00
docs/book Merge pull request #20583 from btj/comments-enable 2025-09-17 14:06:17 +00:00
editors/code Add the rust-analyzer.semanticHighlighting.comments.enable configuration value 2025-09-17 15:46:23 +02:00
lib Merge pull request #20393 from rust-lang/veykril/push-urpzrkwpkmxw 2025-08-06 16:12:58 +00:00
xtask Port a bunch of stuff from rustc and fix a bunch of type mismatches/diagnostics 2025-09-15 18:56:17 +03:00
.editorconfig fix: do not apply editorconfig to git commit msg 2025-03-08 01:44:27 +05:30
.git-blame-ignore-revs Fix some mir eval/lowerings 2025-02-03 14:42:41 +01:00
.gitattributes Fix .gitattributes for test_data 2022-07-24 14:05:35 +02:00
.gitignore manual: Convert to mdbook 2025-01-24 13:23:22 -08:00
.typos.toml Ignore ast id hashes in typos check 2025-06-12 08:50:43 +03:00
Cargo.lock Bump rustc crates once more 2025-09-20 09:38:53 +03:00
Cargo.toml Bump rustc crates once more 2025-09-20 09:38:53 +03:00
clippy.toml Enforce a current directory being set for spawned commands 2024-12-29 12:51:13 +01:00
CONTRIBUTING.md move dev docs to manual 2025-02-17 10:47:27 -08:00
josh-sync.toml Add josh-sync.toml 2025-07-22 15:56:41 +03:00
LICENSE-APACHE Drop Apache license appendices 2024-08-27 14:52:34 +03:00
LICENSE-MIT Licenses 2018-01-10 22:47:04 +03:00
PRIVACY.md Update PRIVACY.md 2025-02-07 20:18:21 +01:00
README.md Clarify intro in README and manual 2025-09-08 19:10:14 +01:00
rust-version Prepare for merging from rust-lang/rust 2025-08-11 04:25:52 +00:00
rustfmt.toml Shuffle hir-expand things around 2024-01-26 19:28:39 +01:00
triagebot.toml Use GH app for authenticating sync PRs 2025-07-29 10:07:27 +02:00

rust-analyzer logo

rust-analyzer is a language server that provides IDE functionality for writing Rust programs. You can use it with any editor that supports the Language Server Protocol (VS Code, Vim, Emacs, Zed, etc).

rust-analyzer features include go-to-definition, find-all-references, refactorings and code completion. rust-analyzer also supports integrated formatting (with rustfmt) and integrated diagnostics (with rustc and clippy).

Internally, rust-analyzer is structured as a set of libraries for analyzing Rust code. See Architecture in the manual.

Quick Start

https://rust-analyzer.github.io/book/installation.html

Documentation

If you want to contribute to rust-analyzer check out the CONTRIBUTING.md or if you are just curious about how things work under the hood, see the Contributing section of the manual.

If you want to use rust-analyzer's language server with your editor of choice, check the manual. It also contains some tips & tricks to help you be more productive when using rust-analyzer.

Security and Privacy

See the security and privacy sections of the manual.

Communication

For usage and troubleshooting requests, please use "IDEs and Editors" category of the Rust forum:

https://users.rust-lang.org/c/ide/14

For questions about development and implementation, join rust-analyzer working group on Zulip:

https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer

License

rust-analyzer is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.