都2019年了,没有专门的RustIDE该怎么办?
最近⼀段时间 Rust 似乎开始从默默⽆闻⾛向聚光灯下,从微软宣布探索采⽤ Rust 替代 C/C++,到 Linux 内核维护者表⽰愿意接受 Rust 作为驱动开发语⾔,再到AWS 公开表⽰赞助 Rust,同时连续 4 年被票选为 Stack Overflow 最受欢迎语⾔的光辉事迹⼜被搬出来。频频⾼亮曝光,让“Rust 到底能不能成?”、“以后不⽤学 C/C++了?”、“Rust ⼊门使⽤真的很难吗?”等讨论不绝于⽿。
这其中开发者讨论得⽐较多的⼀个点是“都 2019 年了,Rust 还没有⼀个专门的 IDE 可以⽤来开发”,不⽤多辩驳我们都知道 IDE 对于⼀个编程语⾔的采⽤来说太重要了,像下图这样的开发者⼼声,其实表达出的仅仅是没有IDE 不利的⼀个⽅⾯,也就是对新⼿不友好,⽽功能齐全的专业 IDE 实际上完全不仅仅只对新⼿产⽣影响:
(@Tinian )
有开发者回应,表⽰现在 Rust 确实没有⽐较专业的 IDE,但是已经有了语⾔服务器这种底层基础与各种插件⽀持,甚⾄“IDE 专家”JetBrains 在其当前提供的 IntelliJ Rust 插件成熟之后也会让其像 GoLand ⼀样独⽴出来。
(@志⽥未来、@dwingo 、@墨名次、@warriorsfl)
就着这个话题,我们整理了⼀份⽐较有代表性的 Rust 可⽤ IDE 与相关插件等⼯具的列表,分享给开发者。Rust 语⾔服务器:Rust Language Server
Rust 语⾔服务器(RLS)基于 LSP(Language Server Protocol),即语⾔服务器协议,LSP 由红帽、微软和Codenvy 联合推出,可以让不同的程序编辑器与集成开发环境(IDE)⽅便地嵌⼊各种编程语⾔,允许开发⼈员在最喜爱的⼯具中使⽤各种语⾔来编写程序。
它通过⽤于开发⼯具和语⾔服务器间通信的 JSON-RPC 标准,能够让编程⼯具提供实时反馈的详细信息并以此实现多种强⼤功能,⽐如符号搜寻、语法分析、代码⾃动补全、移⾄定义、描绘轮廓与重构等。Rust 语⾔服务器集
成了这些逻辑作为后端,并通过标准的 LSP 提供给前端⼯具,它被设计为与前端⽆关,可以被不同的编辑器和IDE ⼴泛采⽤。
基于 Rust 语⾔服务器的 VS Code 插件:rls-vscode
这个就是 Rust 官⽅为 Visual Studio Code 提供的 Rust 语⾔服务器前端参考实现,它⽀持:
代码补全
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 中,插件不会覆盖现有任务,因此可以⾃定义任务。
IntelliJ 的 Rust 插件:IntelliJ Rust
IntelliJ Rust 是 IntelliJ 的 Rust 插件,采⽤ Kotlin 开发,功能特性包括:
⽀持原⽣代码提⽰
⽀持强⼤的快捷键功能
代码快速格式化
snippets
该插件有较好的兼容性,兼容 2019.2 版本之后的所有基于 IntelliJ 的 IDE。可⽤功能集之间存在以下差异:
(*) 表⽰:IDEA 社区版、PyCharm 社区版、PyCharm Edu 和 IntelliJ IDEA Edu 版。
从上表中也可以看得出来,CLion 是集成了最多功能⽀持的 IDE,也因此,许多开发者基于 IntelliJ 的 Rust 开发环境直接就是:IntelliJ Rust+CLion。
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
务器和 Cargo 集成提供了丰富的开发与调试功能。它可以作为完整的 Eclipse 软件包下载。
除了 Rust 语⾔服务器提供的功能外,Corrosion 还可以帮助⽤户更好地调试 Rust 程序,⽐如提供了查看变量、GDB 控制台与断点等功能。另⼀⽅⾯,由于基于 Eclipse,所以像项⽬⼤纲、暗⿊主题、问题查看与 Git 集成等特性也⽀持,Eclipse ⽤户可以轻松适应。
Rust 代码补全程序:Racer
前⾯提到 Rust 语⾔服务器是作为 IDE 与编辑器的后端提供通⽤能⼒,⽽ Racer 是 Rust 语⾔服务器中的⼀个静态库,它提供了代码⾃动补全功能。
许多 IDE 等⼯具可以轻松集成这样的底层功能,⽬前包括以下⼯具都有集成 Racer 的相关实现:
Eclipse
Emacs
Gedit
Gnome Builder
Kate
Sublime Text
Vim
VS Code
Atom
Kakoune
Vim 的 Rust 插件:rust.vim
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 命令将即时运⾏测试。
⼯具的整理先到这⾥结束了,感兴趣的开发者可以分别单击项⽬标题查看详细介绍,到⾃⼰最得⼼应⼿的 Rust
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论