超簡單介紹
Rust 是 Mozilla Research 設計出來的程式語言。(千秋覺得)它最主要的特性是- 以安全為主要訴求
藉著型別系統,實現資料所有權以及借用(Ownership & borrowing)的概念,在編譯的階段便可以確認資源的使用情況,讓開發者不需要介入資源的管理。 - 強大的靜態型別系統
利用 trait 達成多型,可以建造 algebraic data type。
Rust 利用此型別系統達成了資源管理安全,以及並行處理安全 - 表達力強
有 functional programming 等高階語言中可見的表達模式 - 執行效率好
利用 LLVM 直接編譯到機器碼 - 可用於嵌入式系統開發
您甚至可以利用 #[deny(box-pointers)] 來檢查您的程式是否使用了 heap;C語言的話,不要使用 malloc / free 就保證不會用到 heap,但是沒人替您檢查這個...
- 強大的靜態型別系統(algebraic data type 以及 trait / typeclass)
帶來了 Option (Rust)以及 Maybe (Haskell),不需要使用 null 了。 - Pattern matching
- 資料預設為不可變(immutable)
在 Rust 您必須明確指出某個資料為可變,方可改變其內容;而在 haskell 裡面,如果沒使用奇怪的招數(像是利用 FFI 來修改資料),那資料都是不可變。 - Operator overloading
在 Rust 裡,藉著實作 trait 來賦予資料使用運算子的能力;在 haskell ,運算子被視為函數。此外,使用 haskell 時,您可以定義新的運算子(<_._>, >=> 等稀奇古怪的),也可以把一般函數當成運算子(add a b 等同 a `add` b) - 簡易的 FFI (foreign function interface)界面
開發工具
若透過官方的安裝方式來安裝,則已經取得建置系統 cargo 以及開發工具版本管理系統 rustup,加上編譯器 rustc。此時只要挑選順手的編輯器即可- 建置及包裹管理系統
官方有 cargo (使用官方的安裝方式會一併取得) - 開發工具版本管理
官方有 rustup (使用官方的安裝方式會一併取得) - 文字編輯器
- IntelliJ IDEA + rust plugin
- Atom
language-rust + racer + linter-rust - Visual Studio Code
- Emacs
- Vim
- 除錯器
- 測試工具
cargo test 即應可滿足大多數需求。值得注意的是,cargo test 會一併測試註解說明(//! 以及 ///)內的範例程式碼有沒有錯誤
學習資源
Rust 的學習資源(相對於甚至已有互動式做中學的 JavaScript 以及 Python 來說)似乎不多。您可以參考 https://github.com/ctjhoa/rust-learning 來了解現有的學習資源。想學習 Rust 的人可以先用 The Rust Programming Language 來:
- 能夠弄一個 hello world 程式
- 弄懂大略的語法
函數宣告、資料結構、方法宣告、trait 的概念、型別系統的概念
您可以利用位在 https://github.com/carols10cents/rustlings 的小練習來熟悉語法 - 稍加了解 ownership, borrowing 以及 lifetime 的概念
程式庫
您亦可參考 https://github.com/kud1ing/awesome-rust 來取得更多最新的程式庫資訊- 基礎輔助
- 編譯系統
- libc
提供比較適用於 FFI 的型別,以及 C runtime 中的某些服務 - gcc
- 數學與計算
- rand
產生隨機數 - 安全
- ring
在 Windows 以及 macOS 使用作業系統服務;其他作業系統使用 OpenSSL - 資料序列化(serialization)
- serde
可以處理 json, xml 等諸多格式 - 資料格式剖析
- serde
- pikkr
JSON parser - 日期與時間
- chrono
- 剖析器製作
- nom
- 其他
- byteorder
位元順序轉換、自位元陣列 (&[u8]) 讀取資料 - 框架
- 本機遊戲
- 伺服器以及服務設計
- hyper
- reroute
利用 regular expression 提供 routing 的功能 - pencil
- iron
- nickel
- rocket
目前(2017/3/23)需要使用 nightly 的編譯器方可使用 - Gotham
- 網路通訊
- HTTP
- hyper
- reqwest
- FTP
- ftp
- (探索中)
自行撰寫之文章
- [Rust] cargo.lock 究竟該不該放入 git 倉庫?
- [Rust] 在 GNU/Linux 的機器上產生 Windows 64-bit 執行檔
- [Rust] Rust 預設堆疊大小
- [Rust] 單元測試與效能基準測試 (benchmark) :以某遞迴問題為例
其他高手的文章
- Rust Performance Pitfalls
討論 rust 程式撰寫時關於效能的注意事項 - 5 Tips for Writing Small CLI tools in Rust
- ()
沒有留言:
張貼留言