rust-analyzer在Sublime Text中需手动配置二进制绝对路径、确保cargo/rustc可访问、Cargo.toml识别为TOML语法、并安装匹配版本的rust-src组件,缺一不可。

rust-analyzer 在 Sublime Text 中不是“装个插件就完事”的东西。它根本不会自动下载、不会自动找 cargo、也不会自己读取标准库源码——所有环节都得你手动对齐路径、环境、语法和协议层,缺一不可。
rust-analyzer 二进制必须用绝对路径配置
rust-analyzer 启动失败报 client not started 或 server crashed,90% 是 LSP 插件压根没找到可执行文件。
-
cargo install rust-analyzer已于 2026 年起废弃,不能用了 -
rustup component add rust-analyzer在 macOS(尤其 Apple Silicon)和多数 Linux 发行版上常静默失败 - 正确做法:去 GitHub releases 下载对应平台的最新二进制(如
rust-analyzer-aarch64-apple-darwin),解压后得到单个无后缀文件(Windows 是.exe) - 放到固定路径:
/usr/local/bin/rust-analyzer(macOS/Linux)或C:\tools\rust-analyzer.exe(Windows) - 在 LSP 的
sublime-settings里写死路径:"command": ["/usr/local/bin/rust-analyzer"],不能只写["rust-analyzer"] - 验证方式:Sublime 控制台运行
import os; print(os.environ.get('PATH')),确认该路径在输出中
Sublime 进程必须能访问 cargo 和 rustc
终端里 cargo --version 正常 ≠ Sublime 里能调用。GUI 启动的 Sublime 不加载你的 ~/.zshrc 或 ~/.bash_profile。
- macOS/Linux:确保
~/.cargo/bin已写入 shell 配置,并执行source ~/.zshrc;但更可靠的是从终端启动:subl . - Windows:把
%USERPROFILE%.cargo\bin加进「系统环境变量」(不是用户变量),然后彻底退出 Sublime(右键任务栏图标 → 退出)再重开 - 验证命令:控制台执行
import subprocess; subprocess.run(['cargo', '--version']),不报FileNotFoundError才算真正可用
Cargo.toml 必须被识别为 TOML 语法
rust-analyzer 需要解析 Cargo.toml 来索引依赖,但它只认 source.toml scope —— 如果右下角显示 Plain Text,它就当这文件不存在。
- 安装官方维护的 TOML 插件(推荐
sublimelsp/TOML或braver/TOML) -
安装后必须重启 Sublime,否则
.sublime-syntax不注册,右下角菜单里不会出现TOML选项 - 新建空文件,保存为
test.toml,右下角应显示TOML;若仍为Plain Text,说明插件未生效 - 按
Ctrl+Alt+Shift+P(Win/Linux)或Cmd+Opt+Shift+P(macOS)看是否输出source.toml,没有就换插件或重装
rust-src 组件必须手动安装且版本匹配
rust-analyzer 跳转标准库定义、推导泛型类型,全靠 rust-src 提供的源码。它不会自动下载,也不会跨工具链兼容。
- 运行:
rustup component add rust-src - 源码实际位置:
$(rustup home)/toolchains/<toolchain>/lib/rustlib/src/rust/library</toolchain> - 关键限制:只有最新 stable 工具链的
rust-src被官方支持。如果你项目用了rust-toolchain.toml锁老版本(如1.78.0),rust-analyzer可能无法正确解析 - 解法之一:设环境变量强制用 stable:
RUSTUP_TOOLCHAIN=stable(加到 LSP 的env配置里) - 解法之二:用
rustup toolchain install 1.78.0+rustup component add rust-src --toolchain 1.78.0,再配rust-analyzer用对应版本
最常被忽略的其实是:路径对了、二进制有了、语法也设对了,但 rust-src 版本错位,结果跳转定义全是 ???。别急着重装插件,先查 rustup show 和 rust-analyzer 日志里的 sysroot 路径。


















