QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

k8s自定义controller三部曲之三:编写controller代码

程序员欣宸

Kubernetes Controller 9月月更

云原生(三十五) | Prometheus入门和安装

Lansonli

云原生 k8s 9月月更

Spring源码分析(七)扩展接口BeanPostProcessors源码分析

石臻臻的杂货铺

spring 9月月更

npm run 脚本背后的事情

汪子熙

node.js 开源 npm YARN 9月月更

redis数据结构之压缩列表

急需上岸的小谢

9月月更

FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)

矜辰所致

STM32CubeMX FreeRTOS 9月月更

从改善设计的角度理解TDD

Bright

敏捷 TDD

三种获取URL参数值的方法

devpoint

JavaScript URL参数解析 9月月更

Kubernetes网络插件详解 - Calico篇 - 网络基础

巨子嘉

架构实战营模块六作业

zhihai.tu

在互联网,摸爬滚打了几年,我悟了。面对如今经济形势,普通打工人如何应对?

HullQin

Go golang 后端 websocket 9月月更

IO多路复用中的Select/poll/epoll总结全乎了

知识浅谈

IO多路复用 9月月更

「知识点」PropTypes提供的验证器

叶一一

JavaScript 前端 9月月更

大型网站架构

源字节1号

软件架构 后端开发

记一次 swap 导致系统盘高 IOPS 问题排查

卫智雄

linux运维

Java 键盘输入n个数进行排序输出

排序 java基础 9月月更

拆分电商系统为微服务

张立奎

日拱算法:什么是“情感丰富的文字”?

掘金安东尼

9月月更

我理解的Smart Domain与DDD

Bright

敏捷 DDD TDD

Spring源码分析(八)Spring 所有BeanFactoryPostProcessor扩展接口

石臻臻的杂货铺

spring

Java问题解决录: 运行时抛出NoSuchMethodError / NoSuchFieldError异常

崔认知

5 个 JavaScript 写法小技巧分享

掘金安东尼

JavaScript 9月月更

挑战30天学完Python:Day1火力全开-初识Python(含系列大纲)

MegaQi

9月月更 挑战30天学完Python

2022-09-03:n块石头放置在二维平面中的一些整数坐标点上 每个坐标点上最多只能有一块石头 如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。 给你一个长度为 n 的数组

福大大架构师每日一题

算法 rust 福大大

都2022年了,Python Web框架你不会只知道Django和Flask吧?

梦想橡皮擦

Python 9月月更

设计模式的艺术 第二十四章策略设计模式练习(开发一款飞机模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征,为了将来能够模拟更多种类的飞机,试采用策略模式设计该飞机模拟系统)

代廉洁

设计模式的艺术

Mavan:自定义骨架及工程初始化

程序员架构进阶

maven 低代码 9月日更 9月月更

从改善设计的角度理解TDD (2)

Bright

敏捷 TDD

好代码的五个特质-CUPID

Bright

敏捷 DDD TDD

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