2021 年用什么 IDE 开发 Rust ?

原创
02/25 11:01
阅读数 5.4W

随着 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 官方为 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 Rustintellij-toml

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

  • 支持原生代码提示
  • 支持强大的快捷键功能
  • 代码快速格式化
  • snippets

IntelliJ Rustintellij-tomlIDEACLionPyCharm 和其他 JetBrains IDE 带来了 Rust 和 TOML 支持。

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

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

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

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 支持状态的概述表单,并保持实时更新:

详情可查看:https://areweideyet.com

也欢迎各位 Rust 爱好者分享自己正在使用的 Rust 开发工具,我们将持续完善补全这篇内容。

展开阅读全文
打赏
5
28 收藏
分享
加载中
CLion + IDEA Rust插件,好用
05/28 16:35
回复
举报
个人体验文章:《Rust:vim 环境配置》
https://www.yuque.com/zhoujiping/programming/rust-vim-settings
03/24 18:17
回复
举报
大东BE博主
大赞,转来OSC发篇博客可好?
03/24 22:07
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
Geany的数据还停留在"2015-08-16",你贴的这个文章不是误导人么?
难道就因为是英文的?它就是真的?你实际用过Geany没?
用过Geany就知道,Geany默认就支持符号补全和跳转,还有片段完成.
别把老外写的文章奉为圭臬,全当真理.
02/27 11:18
回复
举报
重新学起来,大有可为
02/27 10:12
回复
举报
Gnu Builds 什么时候能成为Linux发行版里的全语言开发组件
02/27 07:37
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
该评论暂时无法显示,详情咨询 QQ 群:912889742
的确是应该如此~
03/10 11:19
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
kotlin我放弃了,python还行,接下来准备学go,这个只是个人对语言的喜爱,不代表语言的好或者不好
02/26 11:43
回复
举报
哈哈了解了解,这几个现在来说应该是python 算最成熟了
02/26 16:13
回复
举报
Clion + Rust 插件,现在是Rust开发与调试 IDE的不二选择!
02/26 10:25
回复
举报
clion那玩意要钱啊
02/26 11:22
回复
举报
这么点钱都心疼?
02/28 01:30
回复
举报
就不能出个专门的ide,不用插件的
02/26 11:23
回复
举报
就不能出个专门的ide,不用插件的
02/26 11:24
回复
举报
clon
02/26 09:17
回复
举报
clion
02/26 09:18
回复
举报
更多评论
打赏
24 评论
28 收藏
5
分享
返回顶部
顶部