写点什么

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

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

关注

评论

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

PageHelper原理深度剖析(集成+源码)

阿Q说代码

ThreadLocal 分页 PageHelper 8月日更 mybatis的拦截器

聊聊 Linux 登陆提示信息 motd 文件

耳东@Erdong

Linux 8月日更 motd

iOS开发:Mac电脑Xcode里面添加导入真机调试包的步骤

三掌柜

8月日更 8月

Vue进阶(六十三):如何使浏览器打开时,默认的文档模式就是标准模式

No Silver Bullet

Vue 8月日更

智能运维系列直播间开讲啦,就在今天!

KubeCube开源:魔方六面,降阶Kubernetes落地应用

网易数帆

开源 Kubernetes 容器 KubeCube

国产接口调试工具ApiPost中的内置变量

Proud lion

大前端 测试 后端 Postman 开发工具

打造数字人民币的大运应用场景

CECBC

百度地图开发-引入地图SDK并配置 02

Andy阿辉

android Android 小菜鸟 8月日更

以区块链为基础 通证经济是下一代互联网的数字经济

CECBC

使用mock.js给前端生成需要的数据

与风逐梦

大前端 后端 开发工具

Golang:再谈生产者消费者模型

Regan Yue

协程 Go 语言 8月日更

6种常用Bean拷贝工具一览

码农参上

8月日更 对象拷贝

MySQL大版本间的区别

4ye

MySQL 后端 innodb 版本 8月日更

手撸二叉树之二叉树的坡度

HelloWorld杰少

8月日更

Go- 函数参数和返回值

HelloBug

函数 参数 返回值 Go 语言

带头撸抽奖系统,DDD + RPC 开发分布式架构!

小傅哥

DDD 小傅哥 架构设计 springboot 抽奖系统

架构实战营 模块一作业

💤 ZZzz💤

架构实战营

面试重灾区:请说说mybatis的一级缓存和二级缓存

小鲍侃java

8月日更

带你梳理Jetty自定义ProxyServlet实现反向代理服务

华为云开发者联盟

容器 k8s jetty Servlet引擎 ProxyServlet

protocol buffer的高效编码方式

程序那些事

Java protobuf 程序那些事

架构实战营作业--模块一

冬瓜茶

最小二乘法,了解一下?

华为云开发者联盟

数据 数据处理 计算 最小二乘法 数学工具

从lowcode看下一代前端应用框架

百度Geek说

大前端 lowcode

Java NIO在接口自动化中应用

FunTester

Java nio 接口测试 测试开发

区块链+物联网设备,能产生什么反应?

CECBC

在线JSON转PHP Array工具

入门小站

工具

传统到敏捷的转型中,谁更适合做Scrum Master?

华为云开发者联盟

Scrum 敏捷 团队 项目经理 Scrum Master

Android模块化开发实践

vivo互联网技术

android 架构 开发 项目实战 模块

NameServer 核心原理解析

leonsh

RocketMQ 消息队列 NameServer

云小课 | 详解华为云独享型负载均衡如何计费

华为云开发者联盟

负载均衡 华为云 弹性负载均衡 独享型ELB实例 独享型负载均衡

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