今天分享主題是,關于一些值得注意的 Rust 庫,這些庫可以根據它們的功能和在編碼中的受歡迎程度進行選擇。
什么是 Rust 庫?
在 Rust 中,常被稱為 “crate” 的庫,是一個打包的單元,可以包含一個或多個模塊,提供了一組相關的功能,如腳本和模塊,讓程序員能夠避免重復實現。有兩種主要類型的 crate,二進制可執行文件(Binary crate)和庫(Library crate)。
如何使用 Rust 庫?
使用 Rust 庫參考以下步驟。
(1)選擇庫,確定你想要使用的庫,可以到 crates.io 上搜索 Rust 庫,里面非常豐富的。
(2)添加依賴 `Cargo.toml
確定好 create 后,通過在 Cargo.toml 文件的 dependencies 部分中包含它來將其添加到你的項目中,也可以通過命令來添加,如 cargo add serde --features derive
(3)編譯依賴
當你運行cargo build 或 cargo run時,Rust 的包管理器 Cargo 將從 crates.io 中獲取 crate 及其依賴項,并將它們編譯為項目的一部分。
(4)在代碼中使用庫
添加依賴項后,就可以通過使用關鍵字將其納入范圍來在 Rust 代碼中使用該庫use,如下:
use rand::Rng;
fn mAIn() {
let random_number = rand::thread_rng().gen_range(1..=100);
println!("隨機數: {}", random_number);
}
(5)更新庫
通過更新庫cargo update,然后 Cargo 將解析最新的兼容版本并Cargo.lock相應地更新文件的。
很受歡迎的 Rust 庫
- Serde:它是數據序列化和反序列化的包,非常受歡迎,下載量已經超過 2.16 億次,有 270 多個版本。而且支持很多的數據格式包括 JSON、YAML、TOML、Pickle、BSON 等等。
- Lazy_static :用于惰性靜態數據初始化的包,在 Rust 中的靜態變量通常在編譯時初始化,但在某些情況下您可能希望在運行時初始化它們。
- Thiserror:是 Rust 中的一個實用庫,幫你簡化了創建自定義錯誤類型的過程。可以用 #[error(...)] 宏定義錯誤的顯示方式,并自動獲得標準庫的 Error 特性。
- Itertools:是一個 Rust 的包,提供了額外的迭代器特征、函數和適配器,擴展了 Rust 標準迭代器的功能。
- Anyhow:是一個簡化 Rust 錯誤處理的包。與 dyn Error 相比,它不需要裝箱,避免了額外的內存開銷,主打就是一種輕量且方便處理錯誤的方式。
音頻和聲音
- Hound:它是一個基于 Rust 的庫,用于以 WAV 音頻格式進行編碼和解碼,通常用于原始、未壓縮的音頻。它的開發主要是為了測試 Claxon,另一個用于 FLAC 解碼的 Rust 庫。Hound 在 Apache 2.0 許可證下運行,可用于開源和閉源項目,無論是否商業。
- CPAL(跨平臺音頻庫)是一個用純 Rust 編寫的低級音頻輸入和輸出庫。主要功能包括枚舉音頻主機、識別可用音頻設備、確定默認輸入/輸出設備以及管理 PCM 流。
- Symphonia:是一個基于 Rust 的多媒體庫,專注于音頻解復用、標簽讀取和解碼。它支持流行的音頻編解碼器和媒體容器,提供高效的音頻數據操作系統。
此外,Symphonia 注重 100% Rust 安全性和速度,同時具有最小的依賴性,保持高性能。
其他
- Chrono:是 Rust 的一個日期和時間庫。
- Time:是 Rust 的日期和時間庫。
- Ring:是一個使用 Rust、C 和匯編語言編寫的加密庫,旨在促進用戶友好和安全的操作。
- Rust bio:該庫為生物信息學提供算法和數據結構解決方案,科學領域使用廣泛。
- geo:這個包每月的下載量超過 12 萬次,提供點、線串和多邊形等地理空間類型,并包括各種操作:面積計算、距離測量和仿射變換,搞科學的應該很方便。
有興趣,可以使用 Rust 的性能優勢來完成各個領域的任務,可以從金融科技和生物醫學到機器學習和商業智能。在今天認為 Rust 廣泛應用于容錯軟件,特別是生產就緒系統和性能關鍵組件,未來可期!