写点什么

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

2017 年 2 月 06 日

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 年 2 月 06 日 18:001707
用户头像

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

关注

评论

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

Wireshark数据包分析学习笔记Day22

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

21天吃透这套字节面试题后,我成功跳槽进了字节,税后25K

互联网架构师小马

Java 数据结构 面试 算法

这个 29.7 K 的剪贴板 JS 库有点东西!

阿宝哥

JavaScript 开源项目 源码解析

搭建博客可能会用到的 Git 命令|学习笔记

彭宏豪95

学习 极客时间 笔记

使用组件的细节点

小小

校招社招皆宜!阿里强推面试突击手册真就无敌了!

Java王路飞

Java 程序员 架构 面试 阿里

区块链重新定义支付结算,让行业更便捷高效

CECBC区块链专委会

移动支付

简单粗暴实现深色模式

小小

深色模式

rmtc交易所系统开发平台丨rmtc交易所源码设计

系统开发咨询1357O98O718

Python OpenCV 图像缩放 cv2.resize 方法

梦想橡皮擦

3月日更

设计与思考,关于资源和生命周期(二)

程序员架构进阶

设计实践 生命周期 28天写作 3月日更 池化技术

JVM疑难情况分析

秋天

jvm调优

寻找被遗忘的勇气(二十五)

Changing Lin

3月日更

Java后端开发面试题之MySQL上篇(含答案)

北游学Java

Java MySQL 面试

常见Http响应码

风翱

3月日更 http响应码

聊一聊 Vue 3 双向绑定是如何工作的

阿宝哥

Vue Vue 3

Service Mesh框架选型对比分析:Linkerd、Envoy、Istio、Conduit

xcbeyond

Service Mesh 服务网格 3月日更

为智能世界“高”歌:HEIGHT,五种风景,一个答案

脑极体

你不知道的 Proxy

阿宝哥

JavaScript Proxy web api

比特币:21世纪的终极离岸银行

CECBC区块链专委会

比特币

作为后端开发人员应该懂的TCP、HTTP、Socket、Socket连接池,一文详解丨Linux后端开发

Linux服务器开发

TCP socket HTTP 后端开发 Linux服务器开发

发展数字经济要因地制宜

CECBC区块链专委会

数字经济

2021最新整理Java面试合集(1000道附答案解析)

比伯

Java 编程 架构 面试 程序人生

9种常用便捷的Java异常处理方法,帮你脱身繁琐

北游学Java

Java 异常 异常检测 异常处理

坚持输出文字

lenka

3月日更

管理者如何应对员工离职

石云升

离职 28天写作 职场经验 管理经验 3月日更

架构师训练营第一课学习笔记

杰语

Redis - 替换策略:LRU和LFU

insight

redis 3月日更

第七次作业

秦挺

盘点数字人民币试点地区 哪里既可申请开通又能领红包?

CECBC区块链专委会

数字人民币

百度AI人才培养课程0元报名倒计时

百度大脑

百度 AI 飞桨

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