Rust到底能不能成?2021年用什么IDE开发Rust?(rust做什么开发)

出品|开源中国

文|大东

随着 Rust 基金会的成立,“Rust 到底能不能成?”再次成为社区里的热门话题。

此次由微软、谷歌、AWS、华为四大全球顶级科技厂商与 Rust 的创造者 Mozilla 联合创立开源基金会,无疑也给国内那些想要上 Rust 车的开发者朋友打了一剂强心针。不少朋友表示自己要第 n 次开始学习 Rust 了。

我们结合此前的内容,整理更新了一份比较有代表性的 Rust 可用 IDE 与相关插件等工具的列表,希望对想学习 Rust 的开发者有所帮助。

Rust语言服务器:Rust Language Server

Rust 语言服务器(RLS)基于 LSP(Language Server Protocol),即语言服务器协议,LSP 由红帽、微软和 Codenvy 联合推出,可以让不同的程序编辑器与集成开发环境(IDE)方便地嵌入各种编程语言,允许开发人员在最喜爱的工具中使用各种语言来编写程序。

它通过用于开发工具和语言服务器间通信的 JSON-RPC 标准,能够让编程工具提供实时反馈的详细信息并以此实现多种强大功能,比如符号搜寻、语法分析、代码自动补全、移至定义、描绘轮廓与重构等。Rust 语言服务器集成了这些逻辑作为后端,并通过标准的 LSP 提供给前端工具,它被设计为与前端无关,可以被不同的编辑器和 IDE 广泛采用,但目前项目团队仅在 VS Code 中进行测试。用户可以在 VS Code 扩展商店中找到基于 RLS 实现的 Rust 官方插件。

Rust到底能不能成?2021年用什么IDE开发Rust?(rust做什么开发)

这个就是 Rust 官方为 Visual Studio Code 提供的 Rust 插件,该插件最初是 Rust 官方语言服务器(RSL)的前端参考实现,现在也支持另一个来自社区维护的 Rust 服务器 rust-analyzer(RA),用户可根据个人偏好在 RSL 或者 RA 之间选择安装一个。该插件支持:

  • 代码补全

  • jump to definition、peek definition、find all references 与 symbol search

  • 类型和文档悬停提示

  • 代码格式化

  • 重构

  • 错误纠正并应用建议

  • snippets

  • 构建任务

值得一提的是 snippets(代码片段)和构建任务这两个特性。

snippets 是扩展为通用样板的代码模板。输入时,Intellisense 会将代码段名称包括在内作为选项,可供快捷键选中。提供了以下 snippets:

  • for – 创建循环

  • unimplemented

  • unreachable

  • print(ln)

  • assert(_eq)

  • macro_rules – 声明宏

  • if let Option – 在某些情况下执行 if let 语句

  • spawn – 创建线程

  • extern crate – 插入 extern crate 语句

此 Rust 插件提供了使用相关的 cargo 命令进行构建、运行和测试的任务,可以使用 ctrl shift b 进行构建,可通过命令面板中的“运行任务”查看其它任务。这些任务内容写在 task.json 中,插件不会覆盖现有任务,因此可以自定义任务。

社区驱动的Rust语言服务器rust-analyzer

rust-anlyzer(RA)是除了 RSL 以外的另一个 Rust 语言服务器,由社区驱动开发。自 2019 年末发布第一个预编译 Release 以来,RA 都会在每周二稳定发布新版本并保持至今。经过快速的迭代,目前 RA 各方面的优化和提升已经超越 RSL,所以也被官方纳入 RSL 2.0 计划的一部分。Rust 的 VS Code 官方插件也已经增加了对 RA 的支持。

RA 目前已经支持 Vim、Emac、Sublime Text 3 和 VSCode 等编辑器,可通过官方文档获取详细的安装指导。

Rust代码补全程序:Racer

前面提到 RSL 和 RA 都是 Rust 语言服务器,作为 IDE 与编辑器的后端提供通用能力。而 Racer 是 Rust 语言服务器中的一个静态库,它提供了代码自动补全功能。

许多 IDE 等工具可以轻松集成这样的底层功能,目前包括以下工具都有集成 Racer 的相关实现:

  • Eclipse

  • Emacs

  • Gedit

  • Gnome Builder

  • Kate

  • Sublime Text

  • Vim

  • VS Code

  • Atom

  • Kakoune

IntelliJ的Rust插件:IntelliJ Rust 和 intellij-toml

IntelliJ Rust 是 IntelliJ 的 Rust 插件,采用 Kotlin 开发,功能特性包括:

  • 支持原生代码提示

  • 支持强大的快捷键功能

  • 代码快速格式化

  • snippets

IntelliJ Rust 和 intellij-toml 为 IDEA,CLion,PyCharm 和其他 JetBrains IDE 带来了 Rust 和 TOML 支持。

语言支持包括语法突出显示,完成,导航和其他代码洞察功能。可以使用 Cargo 命令并运行 Clippy 或 Rustfmt,而无需离开 IDE。CLion 和 IntelliJ IDEA Ultimate 中提供了调试器和分析器。CLion 的集成还支持 CPU 分析。对于所有其他 IDE,可以使用本机调试插件进行调试。

C/C 跨平台集成开发环境:CLion

Rust到底能不能成?2021年用什么IDE开发Rust?(rust做什么开发)

CLion 是专门用于 C/C 开发的 IDE,它的特性包括:

  • 智能 C/C 编辑:原生 C/C 支持,包括现代 C 标准、libc 和 Boost。

  • 导航能力:即时导航到字符的声明或上下文用法,在整个项目中按名称搜索类、文件与字符,并且提供具有结构和层次结构视图的代码库。

  • 代码生成:通过简单的快捷键就可以完成一些代码生成操作,包括:添加类成员、重写/实现函数、生成构造函数/析构函数、getter/setter,判断等式、关系运算和流输出运算、使用语句封装代码块与根据实际用法生成声明。

  • 重构:提供重命名符号、在层次结构中上/下移动成员与更改函数签名等功能。

通过 IntelliJ Rust 插件,CLion 提供了对 Rust 的高度支持,除了基本的功能,它还为 Rust 提供了完善的调试器、CPU Profiler 和 Valgrind 内存检查等能力。

Eclipse IDE的Rust插件:Eclipse Corrosion

Rust到底能不能成?2021年用什么IDE开发Rust?(rust做什么开发)

Eclipse Corrosion 是 Eclipse IDE 中的 Rust 版本,本质上是一个 Eclipse IDE 的 Rust 插件,通过与 Rust 语言服务器和 Cargo 集成提供了丰富的开发与调试功能。它可以作为完整的 Eclipse 软件包下载。

除了 Rust 语言服务器提供的功能外,Corrosion 还可以帮助用户更好地调试 Rust 程序,比如提供了查看变量、GDB 控制台与断点等功能。另一方面,由于基于 Eclipse,所以像项目大纲、暗黑主题、问题查看与 Git 集成等特性也支持,Eclipse 用户可以轻松适应。

Vim的Rust插件:rust.vim

Rust 官方实现了一个 Vim 插件 rust.vim,爱折腾的开发者可以用来配置 Vim 下的 Rust 开发环境。rust.vim 提供了 Rust 文件检测、语法高亮、格式设置与语法检测工具 Syntastic 集成等功能。特性包括:

  • Syntastic 错误检测:rust.vim 默认将自动将 cargo 作为语法检查器注册到 Syntastic。

  • 可集成 Tagbar 查看源码

  • rustfmt 格式化代码:安装了 rustfmt 的话,可以使用 :RustFmt 命令格式化代码。

  • Playpen 集成::RustPlay 命令会将当前选择内容发送给 Rust playpen,如果未选择任何内容则将当前缓冲区发送给 Rust playpen。

  • 测试:在 cargo 项目中,:RustTest 命令将即时运行测试。

国外也已经有开发者整理了一份更为全面的 IDE 与插件等工具对 Rust 支持状态的概述表单,并保持实时更新:

Rust到底能不能成?2021年用什么IDE开发Rust?(rust做什么开发)

相关新闻

联系我们
联系我们
在线咨询
分享本页
返回顶部