写点什么

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:002659
用户头像

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

关注

评论

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

分享几个团队敏捷转型过程中的故事

Bruce Talk

Scrum 敏捷 Agile

模块二作业

Mr.He

架构实战营

【面试&个人成长】2021年过半,社招和校招的经验之谈

王知无

一文入门 Go 的性能分析

Rayjun

pprof Go 语言

微信朋友圈的高性能复杂度

张文龙

#架构实战营

白嫖一份小白到进阶网络安全学习宝典【建议收藏】

网络安全学海

面试 网络安全 信息安全 渗透测试 开发安全

【LeetCode】连续子数组的最大和Java题解

Albert

算法 LeetCode 7月日更

大数据与分布式

喵叔

7月日更

Linux之/etc/group文件

入门小站

Linux

华为数据治理及数据分类管理实践

王知无

Spark SQL和DataFrames:与外部数据源进行交互(五)

Databri_AI

sql spark

模块二作业

Geek_35a345

Vue进阶(幺肆捌):Vuex辅助函数详解

No Silver Bullet

Vue vuex 7月日更

架构实战营模块二作业

袁小芬

架构实战营

八位阿里大牛耗时三年总结出Java面试复盘手册!带你实现逆风翻盘

心理韧性:如何让自己从逆境中走出来

石云升

学习 心理学 7月日更

网络攻防学习笔记 Day77

穿过生命散发芬芳

网络攻防 7月日更

17道题你能秒我?我Hbase八股文反手就甩你一脸

王知无

和12岁小同志搞创客开发:检测按键状态的两件法宝

不脱发的程序猿

DIY 中断 创客开发 按键检测

科学主义 -- 个人进步的杀手

俞凡

认知

第五周作业 - 知识星球加入星球的流程图

小夏

产品经理训练营 邱岳

云计算的革命尚未开始

大可不加冰

云计算 Cloud 基础设施即代码 Cloud Native

丢失api-ms-win-crt-runtimel1-1-0

好孩子

Data Mesh,数据网格的道与术

王知无

在线XML转JSON工具

入门小站

微信朋友圈的高性能复杂度分析

架构0期-Bingo

架构实战营 - 模块二作业

李东旭

「架构实战营」

如何写出富含知识的代码

escray

学习 极客时间 7月日更 如何落地业务建模

模块二作业

SAKIN

Vue进阶(幺伍零):Vue key应用

No Silver Bullet

Vue 7月日更 key

设计一个秒杀系统

卢卡多多

秒杀 7月日更

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