目錄
對於各套件期望的特色:
- 功能豐富
- 執行快速
- 資源需求少
- 執行檔小
- 使用簡單
- 跨平台
- Not-Yet-Awesome Rust
- 列出特定領域缺少的關鍵套件
- Request For Implementation - Crates that don't exist, but should
- 特定套件缺少的功能,功能描述較詳細較明確
Rust 的第三方套件都會蒐集在 crates.io , 而放在上面的套件都可以在 docs.rs 找到對應的文件。
Rust 官方有提供 getopts library 可以幫助處理 CLI 參數, 但是功能比較基本。 另外第三方有功能比較強的套件, 其中 docopt 可以直接撰寫 help message 來爬參數, 而 clap-rs 則提供多樣化的選擇(Method、Macro、YAML), 並且可以生出 help message、Shell 補完(Bash、Fish、Zsh、Powershell)、打錯時的建議。
目前已經出現針對生物資訊的 library - Rust-Bio , 已經實做不少格式和演算法的支援, 例如 FASTQ、FASTA、BED, 雖然離完整還有段距離, 但是社群、開發活躍度是可以期待的。
Rust 實做的 Ethereum client - Parity 在效能測試上已經是最快的 client 了, 在效能和實用性上都已經足夠成熟。
Rust 目前已經有許多 FFI 的專案出現, 有些成熟度還不夠:
- Node.js: Neon
- 提供 API 來撰寫 Node.js Module
- Erlang/Elixir: Rustler
- 提供 API 來撰寫 Erlang NIF (Erlang Navtive Implemented Function) 執行在 BEAM 上
- Python: PyO3
- 在 Rust 中使用 Python 程式
- Ruby: Ruru
- 提供 API 來撰寫 Ruby Extension
- R: rustr
- 提供 API 來撰寫 R Extension,API 在 Rust 中執行 R 程式碼
- C: rusty-cheddar
- 自動從 Rust 程式碼產生 C Header
- rusty-binder
- rust-bindgen
目前科學運算相關的套件還沒有像 Python 生態圈那樣充足、蓬勃, 幾個有稍微規模的專案:
- num
- 提供基本的數值型別,例如大數
- rust-ndarray
- 提供 N 維 Array 相關的操作、計算
- rulinalg
- 提供基本的線性代數運算
- vsop87-rs
- 提供 VSOP87 演算法來計算星體軌道
- astro-rust
- 提供基本的天文相關演算法
目前相關的套件還不夠蓬勃,
只有少量的資源,
來 Python 生態圈的 scikit-learn
還有不少距離,
而且目前沒有像 Python 的 numpy
那樣統一的資料結構,
發展上有些發散。
- Leaf
- 機器學習 Framework,支援 GPU
- rusty-machine
- 提供基本的機器學習演算法
- rustlearn
- 提供基本的機器學習演算法
- Rustml
- 提供基本的機器學習演算法
- HAL : Hyper Adaptive Learning
- 基於 ArrayFire 提供 RNN、LTSM 等演算法
在處理 Unicode 上面,Rust 有許多基本的操作都在 unicode-rs 底下, 其中的
unicode-segmentation
會根據Unicode Standard Annex #29
來做分割unicode-width
會根據Unicode Standard Annex #11
判斷顯示的寬度unicode-xid
會根據Unicode Standard Annex #31
判斷是否有XID_Start
或XID_Continue
屬性unicode-normalization
會根據Unicode Standard Annex #15
來組合或拆解文字
其他
- WTF-8 - implementation of the WTF-8 encoding
- Emojicons - Parse :emoji: notation to unicode representation
- libucd - exposing much of the Unicode Character Database
- unicode-bidi - implements the Unicode Bidirectional Algorithm for display of mixed right-to-left and left-to-right text
- unicode_names - char <-> Unicode character name
- unicode-categories - allows for unicode categories can be queried for characters
- itertools
- 更多 iterator 相關的操作
- Corrode
- Automatic semantics-preserving translation from C to Rust
- Rust-PHF
- Compile time static maps
- ripgrep
- combines the usability of The Silver Searcher (an ack clone) with the raw speed of GNU grep
- xsv
- A fast CSV toolkit
- tokei
- counts the lines of code
- substudy
- Use SRT subtitle files to study foreign languages
- rayon - data-parallelism by work stealing
網站相關的部份有 hyper 負責 HTTP 的處理, HTTP 的實做完整度已經非常充足。