如何为 rust-lang/rust 仓库配置 rust-analyzer:x setup editor 与 ./x check 命令覆盖
发布时间:2026/9/9 12:30:35 锦皓数字建站

如何为 rust-lang/rust 仓库配置 rust-analyzerx setup editor 与 ./x check 命令覆盖【免费下载链接】rustEmpowering everyone to build reliable and efficient software.项目地址: https://gitcode.com/GitHub_Trending/ru/rust在 rust-lang/rust 仓库里开发时rust-analyzer 默认的cargo check无法正确检查rustc和library源码树。这个仓库提供了./x setup editor命令可以为支持的编辑器生成项目本地 LSP 配置文件把 rust-analyzer 的检查命令覆盖为./x check把格式化命令覆盖为 stage 0 的 rustfmt并启用 proc-macro server。本文介绍如何用./x setup editor生成这份配置以 VS Code 为主路径附 Neovim、Emacs、Helix、Zed 的分支说明以及如何在配置中收窄./x check的检查范围。前提你已在本地检出 rust 仓库并完成 bootstrap 配置./x命令可以运行编辑器中已安装 rust-analyzer。用./x setup editor生成项目本地 LSP 配置在仓库根目录运行./x setup editor命令会提示你选择支持的编辑器并创建对应的项目本地配置文件。你也可以不单独运行它而是在执行./x setup的过程中把它作为一个步骤完成。各编辑器选项与生成的文件选项生成的文件推荐配置来源vscode.vscode/settings.jsonsrc/etc/rust_analyzer_settings.jsonvimcoc.nvim.vim/coc-settings.jsonsrc/etc/rust_analyzer_settings.jsonemacs.dir-locals.elsrc/etc/rust_analyzer_eglot.elhelixlanguages.tomlsrc/etc/rust_analyzer_helix.tomlzed.zed/settings.jsonsrc/etc/rust_analyzer_zed.json完整说明见 rustc-dev-guide 的 suggested.md。生成的配置做了什么以 VS Code 为例生成的.vscode/settings.json基于 src/etc/rust_analyzer_settings.json其中与本场景直接相关的设置检查命令覆盖rust-analyzer.check.overrideCommand被设为python3 x.py check --json-output --build-dir build-rust-analyzer即每次检查都走 bootstrap 的./x check--json-output让诊断以 JSON 输出回传给 rust-analyzer。独立构建目录--build-dir build-rust-analyzer让 rust-analyzer 的构建与你在命令行手动跑的x命令使用不同的构建目录。文件开头的注释解释了原因rust-analyzer 的检查不会阻塞你手动的x命令反之亦然。linkedProjects配置列出仓库中六个需要 rust-analyzer 管理的 Cargo 项目——根Cargo.toml、compiler/rustc_codegen_cranelift、compiler/rustc_codegen_gcc、library、src/bootstrap和src/tools/rust-analyzer各自的Cargo.toml。rustfmt 覆盖rust-analyzer.rustfmt.overrideCommand指向${workspaceFolder}/build/host/rustfmt/bin/rustfmt即 bootstrap 构建出的 stage 0 rustfmt并固定--edition2024。proc-macro serverrust-analyzer.procMacro.server指向${workspaceFolder}/build/host/stage0/libexec/rust-analyzer-proc-macro-srv并启用。环境server.extraEnv把RUSTC、CARGO指向build/host/stage0/bin/下的构建产物cargo.extraEnv设置RUSTC_BOOTSTRAP1。配置注释中说明rustfmt 与 proc-macro server 需要先被 bootstrap 下载。在仓库根目录运行下面的命令触发下载proc macro server 几乎任何x命令都会顺带下载这条命令额外下载 rustfmtx fmt --check如果该命令不工作先运行x clean再重试。收窄./x check的检查范围默认的rust-analyzer.check.overrideCommand会检查仓库里所有的 crates 和 tools。如果你只在改某一部分可以把命令收窄到正在工作的部分以节省检查时间。例如正在改编译器时可把检查命令覆盖为x check compiler --json-output运行x check --help --verbose可以查看当前可用的 parts再据此替换命令中的compiler。另外检查 library 树需要一个 stage1 编译器在一些机器上是较重的开销。bootstrap 提供了--skip-std-check-if-no-download-rustc标志当rust.download-rustc未配置时跳过对 library 树的检查。如果你不想让 rust-analyzer 给机器带来太重负载可以在 rust-analyzer 配置里的./x check命令中加上这个标志。VS Code 替代路径用 Build Task 代替保存时检查如果保存时自动跑./x check不方便可以在 VS Code 里改用 Build Task 手动触发。在.vscode/tasks.json中{ version: 2.0.0, tasks: [ { label: ./x check, command: ./x check, type: shell, problemMatcher: $rustc, presentation: { clear: true }, group: { kind: build, isDefault: true } } ] }problemMatcher使用 VS Code 内置的$rustc匹配器./x check输出的 rustc 诊断会显示在 Problems 面板中这是文档给出的检查输出判断方式。其他编辑器分支Neovim文档给出三种方式用 neoconf.nvim注意这是外部插件链接仅用于说明插件来源——前提是 rust-analyzer 已按 LSP 方式在 Neovim 中配置好。运行./x setup editor时选择vscode生成.vscode/settings.jsonneoconf 在项目打开时检测到该文件会自动读取并更新 rust-analyzer 设置。注意 Neovim 不会展开 VS Code 的${workspaceFolder}变量需要把生成文件中的每处${workspaceFolder}替换为你 rust 仓库的绝对路径。用coc.nvim——需要已安装 node.js。运行./x setup editor选择vim会生成.vim/coc-settings.json之后可以用:CocLocalConfig编辑这些设置。自定义脚本加载配置rustc-dev-guide 提供了一段 Lua 脚本写入$HOME/.config/nvim/after/plugged/rust_analyzer.lua它通过检测 git 根目录下是否存在src/etc/rust_analyzer_zed.json判断当前是否处于 rust-lang/rust 仓库内若是则加载该文件中的initialization_options作为 rust-analyzer 设置。该脚本适用于 neovim 0.11vim.json.decode的skip_comments参数需要 nvim 0.12否则需自行去除注释。EmacsEmacs 通过 Eglot 支持 rust-analyzer 的项目本地配置。先在 Emacs 中完成 Eglot rust-analyzer 的一般配置然后运行./x setup editor选择emacs会提示创建.dir-locals.el其中写入推荐配置内容与 src/etc/rust_analyzer_eglot.el 一致覆盖命令同样指向python3 x.py check --build-dir build-rust-analyzer --json-outputrustfmt 与 proc-macro server 路径使用build-rust-analyzer目录下构建的产物。HelixHelix 内置 LSP 与 rust-analyzer 支持通过languages.toml配置。运行./x setup editor选择helix会提示创建languages.toml推荐配置在 src/etc/rust_analyzer_helix.toml。该文件有一处必须手动处理Helix 不支持在配置里获取 workspace root文件中WORKSPACE_ROOT占位符需要替换为你 rustc 检出的路径涉及rustfmt.overrideCommand与environment中的RUSTC、CARGO三处。ZedZed 内置 LSP 与 rust-analyzer 支持。运行./x setup editor选择zed会提示创建.zed/settings.json推荐配置在 src/etc/rust_analyzer_zed.json。该文件中的路径如build/host/rustfmt/bin/rustfmt是相对仓库根的路径不带${workspaceFolder}前缀与 VS Code 版本的配置对应。不要共享构建目录默认情况下 rust-analyzer 跑 bootstrap 命令时使用与手动构建分离的构建目录即上面的build-rust-analyzer。你可以在生成的 LSP 配置文件中改掉这一点以节省磁盘空间但文档明确不推荐原因有两条每次构建都会锁住构建目录迫使另一方等待rust-analyzer 在后台跑命令时你将无法运行命令行的构建两个构建的 compiler flags 或其他设置冲突时其中一个构建删掉先前构建产物的风险增加某些情况下会导致额外重建。验证与后续操作配置完成后保存 Rust 文件时 rust-analyzer 会按配置的覆盖命令触发./x check简单重构如重命名方法只验证编译器能 build通常已经够用。当确实需要跑测试时再运行./x build。文档还建议了一种节奏先持续构建、推迟跑测试把重构拆成多个 commit之后用git bisect精确定位出问题的 commit——这样最终得到的一组 commit 全部可构建且通过测试也有助于 review。相关限制rustup override set nightly这一节同样在 suggested.md让cargo fmt在仓库里正确工作但文档强调它不允许你用 cargo 直接构建 rustc编译器和标准库的构建仍必须走x。它不是./x setup editor流程的必需步骤。各编辑器生成的配置文件内容以 src/etc 下对应的推荐配置为准如果上游更新了推荐配置重新运行./x setup editor或对照最新文件同步。【免费下载链接】rustEmpowering everyone to build reliable and efficient software.项目地址: https://gitcode.com/GitHub_Trending/ru/rust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。