【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

还在自建MQTT物联网平台?快来试试开源MQTT托管型物联网平台——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

Spring获取Bean的9种方式

小小怪下士

Java spring 程序员 springboot

如何使用滑块实现切换图片功能?

Towify

10分钟玩转阿里云物联网平台设备接入、管理、运维——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

2022年IAA行业品类年度表现总结

易观分析

视频 IAA

微信小程序实验案例:简易成语小词典

TiAmo

小程序 微信小程序

pip安装报错:UnicodeDecodeError 'utf-8' codec can't decode byte 0xc3 in position 4

代码的路

Python

Python报错:ImportError cannot import name 'imresize'

代码的路

Python

Linux安装与卸载软件

代码的路

Linux

PyFlink 最新进展解读及典型应用场景介绍

Apache Flink

大数据 flink 实时计算

mmdetection训练数据遇到的问题

代码的路

Python 机器学习

粒子滤波 PF(Particle filter)算法

代码的路

机器学习

电脑音视频暂停再继续,声音突然变大

代码的路

windows

如何使用免适配云鹰模组实现多网可切?——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

收官!OceanBase第五届技术征文大赛获奖名单公布!

OceanBase 数据库

数据库 oceanbase

中移链合约常用开发介绍 (二)多索引表的使用

BSN研习社

Vue实现登录功能

代码的路

Vue

智能图像处理:基于边缘去除和迭代式内容矫正的复杂文档图像校正

合合技术团队

图像处理 图像预处理 人工智能’

【1.6-1.13】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动

软件测试/测试开发 | 静态扫描体系集成

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

conda安装报错:PermissionError [Errno 13] Permission denied

代码的路

Python

再获殊荣!图数据库 NebulaGraph 获得 ITPUB 2022 创新产品奖

最新动态

互联网医疗月度观察:规范化、合法化的网络售药新时代到来

易观分析

互联网医疗

JDBC的基本概念

代码的路

Java

Win10桌面图标显示问题

代码的路

windows

数维图可视化编辑器超10项功能升级,您的需求就在其中

2D3D前端可视化开发

数据可视化 数字孪生 三维可视化 web3d web组态软件

35张图,直观理解Stable Diffusion

OneFlow

人工智能 深度学习 Stable Diffusion

浅谈服务接口的高可用设计

京东科技开发者

负载均衡 接口 后端 混沌工程 企业号 1 月 PK 榜

Python报错:ModuleNotFoundError: No module named 'xxx'

代码的路

Python

如何使用企业账户进行协作?

Towify

如何理解鲁棒性?为什么robustness会翻译为鲁棒性?

九章云极DataCanvas

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