sublime text 的 rust 异步开发需满足四个前提:rustc 和 cargo 必须在 sublime 控制台 path 中可用;rust-analyzer 必须通过绝对路径配置且手动下载最新二进制;文件语法必须设为 rust(非 plain text);项目必须在含 cargo.toml 的根目录下打开。

rustc 和 cargo 必须在 Sublime 控制台里能跑,否则异步支持直接消失
Sublime Text 不自带 Rust 异步能力,所有 async/await 补全、生命周期推导、tokio 或 async-std 相关提示,都依赖 rust-analyzer 正常加载 —— 而它启动的前提是 cargo 和 rustc 在 Sublime 进程的 PATH 中真实可用。终端里能跑不等于 Sublime 里能跑。
- 按
Ctrl+`打开 Sublime 控制台,执行import os; print(os.environ.get('PATH')),确认输出含.cargo/bin(macOS/Linux)或%USERPROFILE%.cargoin(Windows) - macOS 用户若从 Dock 启动 Sublime,shell 配置(如
~/.zshrc)里的export PATH不会被继承,必须改用open -a "Sublime Text"启动,或彻底重启系统 - Windows 用户加完系统环境变量后,必须彻底关闭 Sublime(右键任务栏 → “退出”),再重新打开,仅关窗口无效
- 验证方式:控制台里直接运行
import subprocess; subprocess.run(['cargo', '--version']),有版本输出才算过关
LSP 配置必须显式指向 rust-analyzer 二进制,不能靠 PATH 查找
异步开发高度依赖 rust-analyzer 的语义分析能力,比如 async fn 返回类型推导、Pin<box future>></box> 展开、#[tokio::main] 宏展开等。但 rustup component add rust-analyzer 在 macOS 和多数 Linux 发行版上已不可靠,cargo install rust-analyzer 更是彻底废弃。
- 去
github.com/rust-lang/rust-analyzer/releases下载对应平台的最新二进制(如rust-analyzer-x86_64-unknown-linux-gnu) - 解压后得到单个无后缀可执行文件,重命名为
rust-analyzer(Linux/macOS)或rust-analyzer.exe(Windows) - 放进
/usr/local/bin/rust-analyzer(Linux/macOS)或%USERPROFILE%in ust-analyzer.exe(Windows),确保终端里能直接运行rust-analyzer --version - LSP 设置中
"command"必须写绝对路径:"command": ["/usr/local/bin/rust-analyzer"],写成["rust-analyzer"]就会静默失败,状态栏不显示LSP: rust-analyzer
语法必须手动设为 Rust,否则 async 关键字根本不被识别
Sublime 不自动将 .rs 文件识别为 Rust,右下角显示 Plain Text 时,LSP 不启动、async/await 无高亮、tokio::spawn 不补全 —— 这不是插件没装,是 Sublime 根本没进入 Rust 模式。
- 打开任意
.rs文件,点击右下角状态栏的Plain Text,手动选Rust - 如果列表里没有
Rust,说明官方Rust插件(by rust-lang)未加载:用 Package Control 重装它,**不要装 RustEnhanced**,二者共存会导致语法 selector 错乱 - 装完后进
View → Syntax → Rust → Rust,设为默认,避免每次打开都手动切 - 确认 LSP 设置中
"scopes"是["source.rust"],且"syntaxes"指向"Packages/Rust/Rust.sublime-syntax",和你当前文件的语法标识严格匹配
rustfmt 不装或路径错,async 代码格式会越来越难读
Rust 异步代码天然嵌套深(async fn → Box::pin → join! → select!),靠手调缩进不现实。rustfmt 是唯一能统一处理 async 块、宏展开和生命周期标注的工具,但它从 Rust 1.75+ 起不再默认安装。
- 终端执行
cargo install rustfmt安装,验证rustfmt --version - RustEnhanced 或 LSP 的
rustfmt_path必须写绝对路径:"/home/xxx/.cargo/bin/rustfmt"(Linux/macOS)或"C:\Users\xxx\.cargo\bin\rustfmt.exe"(Windows) - 别写
~/.cargo/bin/rustfmt—— Sublime 不展开波浪号;也别只写"rustfmt"—— 它不查PATH - 保存时没反应?打开控制台看有没有
rustfmt: command not found,有就说明路径错了
异步开发最易忽略的是项目上下文:LSP 只在含 Cargo.toml 的目录下稳定工作,单文件 main.rs 即使语法对、路径对,tokio 特性也可能无法解析。务必在 Cargo 项目根目录打开文件夹,而不是只打开单个 .rs 文件。











