2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Rust Language Server 可供率先采用者使用

  • 2017-02-06
  • 本文字数:902 字

    阅读完需:约 3 分钟

Rust Language Server (RLS)旨在更方便地设计具有诸如代码自动补全、goto 定义、重新格式化等功能的工具。RLS项目的主要贡献者之一Jonathan Turner 写道,RLS alpha 现在可供率先采用者尝试用于真实项目并给出反馈。

为收集源代码有关信息,Rust Language Server 同时使用Rust 编译器和 Racer ,Racer 是用于对 Rust 代码进行代码自动补全的工具。根据定义,编译器是该程序最权威的信息源,但是由于目前缺乏对 Rust 的增量编译的支持,可能速度会太慢。另一方面,虽然 Racer 在速度上有优势,但是如 Turner 所说,Racer 也有一些局限性,比如无法处理宏,或者说只能部分支持通用类型。因此,RLS 同时查询编译器和 Racer,以便于在预先设定的允许时间内提供最准确的信息。为使该过程尽可能高效,RLS 并不通过 shell 进程来控制编译器或 Racer,而是与两者相链接。

RLS 的当前版本支持以下功能:

  • 自动补全
  • goto 定义
  • goto 符号
  • 查找所有参考
  • 重命名 / 重构
  • 悬停类型
  • how 错误

RLS 的一个关键特征是采用了微软语言服务器协议(LSP)。LSP 在客户端(例如IDE 或文本编辑器)和语言服务器之间建立标准通信协议。这使RLS 可用于各种支持Microsoft LSP 的IDE 或编辑器,包括 Visual Studio Code、Eclipse Che 和 emacs。尤其是 RLS 可以通过安装插件用于Microsoft Visual Studio Code 。插件一旦安装,Visual Studio Code 将自动启动语言服务器,并支持 Rust 的高级编辑功能。

据 Turner 所说,虽然 RLS 目前仍处于早期阶段,还不适用于实际使用,但它应该能够应用于大多数基于 Cargo 的 Rust 项目。开发人员可以通过运行以下代码来安装:

复制代码
git clone https://github.com/jonathandturner/rls
git clone https://github.com/jonathandturner/rls_vscode.git
cd rls_vscode
npm install
export RLS_ROOT=/Source/rls

安装完之后启动 VS Code。所需软件有新版 nightly rustc/cargo 、git、python、node 和cmake。

查看英文原文 Rust Language Server Available for Early Adopters


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-06 18:002826
用户头像

发布了 22 篇内容, 共 61495 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

Raft/Paxos类协议与分布式事务

TiDB 社区干货传送门

数据库架构设计

混沌工程在建信金科的应用实践

TiDB 社区干货传送门

实践案例 故障排查/诊断 TUG 话题探讨

TiSpark 2.4.1(Spark 2.4.5)到TiSpark 2.5.0(Spark 3.0.X/3.1.X)迁移实践

TiDB 社区干货传送门

实践案例

TiDB统计信息原理简介与实践

TiDB 社区干货传送门

管理与运维

DM 同步 modify column 语句到 TiDB 5.3 踩坑二:DDL 语句重放

TiDB 社区干货传送门

实践案例 故障排查/诊断

TiDB源码系列之沉浸式编译TiDB

TiDB 社区干货传送门

TiDB 源码解读

PointGet的一生

TiDB 社区干货传送门

开发语言 TiDB 底层架构 TiDB 源码解读 TiKV 源码解读 TiKV 底层架构

Raft-rs 最佳实践与使用

TiDB 社区干货传送门

TiKV 源码解读

数据库调优之硬件

TiDB 社区干货传送门

性能调优

TiDB中快速恢复被Truncate 的表

TiDB 社区干货传送门

管理与运维

黄东旭: 关于基础软件产品价值的思考

TiDB 社区干货传送门

悲观锁模式下 TiDB 与其他数据库在 RC 及 RR 隔离级别的行为对比

TiDB 社区干货传送门

TiDB与众不同的优化器

TiDB 社区干货传送门

性能测评 应用适配

TiDB 5.4 单机快速安装初体验

TiDB 社区干货传送门

管理与运维 版本测评

raft-rs 示例程序源码解读

TiDB 社区干货传送门

TiKV 源码解读

文盘Rust -- 生命周期问题引发的 static hashmap 锁

TiDB 社区干货传送门

开发语言

国产化浪潮下TiDB解决的痛点问题

TiDB 社区干货传送门

数据库架构设计

TPC-H 下 TiFlash 的扩展性测试报告 - v5.1.0

TiDB 社区干货传送门

版本测评 性能测评

TiDB 5.4 发版丨新功能解读

TiDB 社区干货传送门

TiDB热点测试

TiDB 社区干货传送门

版本测评 性能测评

【专栏平台上线】来自社区的一份感谢信,致谢 137 位 TiDB 社区技术布道师

TiDB 社区干货传送门

TiEM初体验

TiDB 社区干货传送门

集群管理 管理与运维 6.x 实践

从单点到分布式的哲学启蒙

TiDB 社区干货传送门

数据库前沿趋势

【白皮书】TiDelta,一款简单易用的 TiDB 性能对比 Web 工具。

TiDB 社区干货传送门

TIKV、PD添加TLS总结

TiDB 社区干货传送门

实践案例

Tidb为什么能做到国产第一

TiDB 社区干货传送门

性能测评 数据库架构设计 应用适配

温故知新 | mydumper & dumpling 知识点汇总

TiDB 社区干货传送门

TiDB4PG 中 TiDB 版本升级至 v5.3.0

TiDB 社区干货传送门

新版本/特性发布 数据库架构设计

用 Gravity 实现 MongoDB 到 TiDB 的数据复制

TiDB 社区干货传送门

【备考指南】新版 PingCAP PCTP 认证考试

TiDB 社区干货传送门

DM 同步 modify column 语句到 TiDB 5.3 踩坑一:数据乱码

TiDB 社区干货传送门

实践案例 故障排查/诊断

Rust Language Server可供率先采用者使用_语言 & 开发_Sergio De Simone_InfoQ精选文章