歡迎您光臨本站 註冊首頁

2019 年可以選用這些 Rust IDE/DE

←手機掃碼閱讀     admin @ 2019-10-18 , reply:0

最近一段時間 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

Eclipse Corrosion 是 Eclipse IDE 中的 Rust 版本,本質上是一個 Eclipse IDE 的 Rust 插件,通過與 Rust 語言伺服器和 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

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 開發環境。

其實國外也已經有開發者整理了一份更為全面的 IDE 與插件等工具對 Rust 支持狀態的概述表單:

大致可以通過上邊這個圖表了解到支持情況,詳情可以查看:

https://areweideyet.com

Rust 很強大,希望你也能上這條銹跡斑斑的船。

---

另外,因為不免遺漏,所以本文工具列表將持續更新;歡迎提供相關工具線索,我們會持續補全。值得一提的是,文中提到了 Vim 極客式的配置插件,自然會有開發者要說到 Emacs、Sublime 與 Atom 也有類似的實現,歡迎提交線索。


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/110663/rust-ide-so
2019 年可以選用這些 Rust IDE/DE已經有664次圍觀

http://coctec.com/news/all/show-post-217042.html