如果你用 rust-analyzer 写 Rust 代码,可能已经习惯了它吃内存的毛病。一个开发了 4 个月的新项目 Rust Glancer,想换个思路解决这个问题:不做增量分析,把内存占用压到极低。
项目作者在 Reddit 上分享了这段经历。他测试用的是一台 2020 款 MacBook Pro M1,8GB 内存,整个使用过程中 RAM 始终保持在 100MB 以下。这个数字对老电脑用户来说,确实有点吸引力。
![]()
核心思路:冻结分析结果
rust-analyzer 内存占用高的原因主要有三个:一是索引整个工作区,二是维护增量分析状态,三是缓存各种中间数据。后两点是它架构选择的直接结果——为了追求 LSP 响应速度,rust-analyzer 选择了增量方案。
Rust Glancer 的想法正好相反:不做增量,只做一次性全量索引。工作区索引完成后结果保存在文件系统里,查询时按需加载所需数据,用完即弃。这样内存占用自然就下来了。
代价也很明显:从磁盘反序列化数据比从内存读慢,所以冻结分析在速度上天然吃亏。作者用了个折中方案——你打字时不触发全量分析,只对当前代码块做浅层分析,复用之前的完整索引。这样补全速度还算能接受,但新加的导入、结构体、trait 要等保存文件后才会被索引。
功能现状:能用,但不完整
4 个月时间对 Rust LSP 这种体量的项目来说并不宽裕。作者坦承,Rust Glancer 还不是一个完整的 LSP:有缺失功能、有已知 bug、有很多想改进的地方。
不过它已经具备了不少实用能力:
- 完整的索引管线,支持类型推断和 trait 求解(基于 chalk)
- 覆盖大部分常规 Rust 语法
- 支持跳转定义、悬停提示、内联提示、代码补全等常见 LSP 操作
想尝鲜的话,可以直接装 VS Code 扩展,或者从仓库自己构建 vsix 安装。
适合谁用?
这个项目的定位很明确:给老电脑用户一个轻量选择。如果你对 rust-analyzer 的内存占用感到头疼,又不太依赖 agentic 工作流,可以试试 Rust Glancer。作者说,适应它的工作方式其实很快——保存文件后索引才会更新,用几天就习惯了。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.