盤古建站模板seo研究中心論壇
本集合中所有庫都是在開源項目中廣泛使用且在2024年積極維護的庫,排名靠前的庫是當前使用比較廣泛的,不全面但夠用
Rust異步運行時
tokio:異步運行時
async_std:與標準庫兼容性較強的運行時
monoio:字節(jié)開源
smol:一個小型快速的運行時
RustWeb框架&網(wǎng)絡通信
- 其他Web框架見https://juejin.cn/post/7406997325715554315
axum:注重人體工程學和模塊化的 Web 應用程序框架,Tokio團隊開源
axum-server:設計用于axum的hyper實現(xiàn)
- HTTP/1 和 HTTP/2
- 通過rustls或openssl進行 HTTPS
- 通過hyper來實現(xiàn)高性能
- 使用tower制作服務 API
- 對axum有非常好的兼容性
actix:高性能、異步、強大的路由系統(tǒng)和中間件支持
rocket:簡潔的語法、強大的類型安全和可擴展性
volo:字節(jié)跳動服務框架團隊研發(fā)的輕量級、高性能、可擴展性強、易用性好的 Rust RPC 框架,借鑒了actix、axum、hyper、tokio、tonic、tower
- Thrif
- gRPC
hyper:底層HTTP實現(xiàn)
- 專注于實現(xiàn) HTTP 協(xié)議本身,包括解析 HTTP 請求和構(gòu)建 HTTP 響應
tower:用于構(gòu)建可組合的網(wǎng)絡服務的庫,Tokio 官方支持的構(gòu)建異步網(wǎng)絡服務中間件框架,Axum,Tower-web,Tonic 這些項目,都廣泛使用了 Tower 這層抽象
- 適用于構(gòu)建復雜的網(wǎng)絡服務架構(gòu),需要靈活地組合各種功能模塊的場景
- 適用于需要在不同的網(wǎng)絡協(xié)議之間進行切換或同時支持多種協(xié)議時的場景
tonic:基于 HTTP/2 和 gRPC 服務的庫
- 支持 gRPC 的雙向流、一元調(diào)用等特性,也可以作為HTTP/2處理使用
- 適用于需要構(gòu)建高性能的分布式系統(tǒng),并且使用 gRPC 或 HTTP/2 進行通信的場景
prost:Protocol Buffers的Rust實現(xiàn),Tokio出品
- 支持proto2、proto3
tonic-build:tonic-build
可以為 Rust 生成服務端和客戶端的代碼框架
serde:高效且通用地序列化和反序列化 Rust 數(shù)據(jù)結(jié)構(gòu)的框架
reqwest:添加重試機制可以提高與外部服務交互的可靠性
ipnet:網(wǎng)絡地址轉(zhuǎn)換
mime:Media Type,媒體類型(也通常稱為多用途互聯(lián)網(wǎng)郵件擴展或?MIME 類型)是一種標準,用來表示文檔、文件或一組數(shù)據(jù)的性質(zhì)和格式
- application/javascript; charset=utf-8
- text/css; charset=utf-8
Rust錯誤處理
anyhow:捕獲錯誤
thiserror:自定義錯誤
failure:使錯誤處理更加結(jié)構(gòu)化和可維護
Rust配置管理
dotenvy:設置開發(fā)與生產(chǎn)環(huán)境,可在.env
文件中讀取配置
Rust時間和日期
chrono:操作時間日期、時間感知
uuid:生成uuid
Rust數(shù)據(jù)處理
serde_json:JSON 序列化和反序列化
base64:用于 Base64 編碼和解碼
hex:十六進制編碼和解碼
Rust數(shù)據(jù)驗證
validator:數(shù)據(jù)驗證
- 檢查字符串的長度、格式等
- 驗證數(shù)字的范圍
- 檢查郵箱地址、URL 等格式的正確性
schemars:Json驗證
- 兼容serde
valico:Json驗證
Rust圖像處理
image:圖像處理功能,包括加載、保存、轉(zhuǎn)換圖像格式、調(diào)整大小、裁剪等
Rust音頻處理
rodio:用于音頻播放和錄制
Rust服務發(fā)現(xiàn)、配置管理、服務管理
rnacos:用于與rnacos交互
rs_consul:用于與 Consul 進行交互的 Rust 庫。Consul 是一個流行的服務發(fā)現(xiàn)和配置管理工具
etcd_client:用于與 etcd 分布式鍵值存儲進行交互,etcd 也可以用于服務發(fā)現(xiàn)
zookeeper_client:與 ZooKeeper 進行交互
zookeeper:與 ZooKeeper 進行交互的客戶端
serde_yaml_ng:可以用于解析、序列化 YAML 格式的配置文件,結(jié)合標準庫的文件操作std::fs
可以實現(xiàn)配置管理
Rust日志管理、可觀測性
tracing:Tokio維護,分布式跟蹤的 SDK,全面的、可擴展的跟蹤和診斷工具,用于采集監(jiān)控數(shù)據(jù),也可以用作日志,注重跟蹤
tracing-subscriber :提供了一組訂閱器(subscribers),用于消費和處理 Tracing 生成的事件。訂閱器可以用于輸出日志到不同的目標,比如控制臺、文件等
tracing-appender:Tokio維護,用于將 Tracing 事件輸出到不同目標的 appender。它可以幫助將日志記錄到文件、標準輸出等不同的位置,
tracing-error:將 Rust 的錯誤類型與 Tracing 的 span 相關(guān)聯(lián)的庫
tracing-log:用于將 Tracing 事件轉(zhuǎn)換為標準的 log 框架(如 log crate)事件的工具。這使得 Tracing 可以與其他使用 log 框架的庫協(xié)同工作
tracing-opentelemetr:提供了一個集成 Tracing 和 OpenTelemetry 的橋梁。它允許將 Tracing 生成的跟蹤信息轉(zhuǎn)換為 OpenTelemetry 格式,以便與 OpenTelemetry 的生態(tài)系統(tǒng)進行集成
opentelemetry:用于收集分布式系統(tǒng)中的跟蹤、指標和日志數(shù)據(jù)
opentelemetry-otlp:Opentelemetry 的一個組件,用于將跟蹤和指標數(shù)據(jù)發(fā)送到 OpenTelemetry Protocol(OTLP)兼容的后端,如 Zipkin、Jaeger 等
slog:功能強大的日志庫,支持多種后端,如控制臺、文件、系統(tǒng)日志,更注重結(jié)構(gòu)化日志記錄
log:基礎的日志庫,支持不同的日志級別,如error!
、warn!
、info!
、debug!
和trace!
env_logger:通過讀取環(huán)境變量來配置日志級別和輸出格式,可以結(jié)合log
使用
clap:以聲明式或程序式的方式創(chuàng)建命令行解析器,提供參數(shù)行為、幫助生成、用戶建議修復、彩色輸出、shell補全等命令行功能
Rust與k8s
kube:包含一個 Kubernetes 客戶端、一個控制器運行時、一個自定義資源派生和各種工具
Rust數(shù)據(jù)庫
sqlx:異步sql工具包
- 手動編寫 SQL 語句并進行參數(shù)綁定
- 適合對性能有較高要求且需要精細控制 SQL 查詢的場景
- 適合當開發(fā)者希望充分利用 Rust 的類型系統(tǒng)來確保數(shù)據(jù)庫操作的正確性時使用
- 數(shù)據(jù)庫支持
Database | Version | Driver | URL |
---|---|---|---|
MariaDB | 10.1+ | mysql | mysql://root:root@localhost:3306 |
Microsoft SQL Server | 2019 | mssql ?(等待完全重寫驅(qū)動) | |
MySQL | 5.6, 5.7, 8.0 | mysql | mysql://root:root@localhost:3306 |
PostgreSQL | 9.5+ | postgres | postgres://root:root@localhost:5432 |
SQLite | 3.20.1+ | sqlite | sqlite:./sqlite.db?mode=rwc |
seaql:查詢生成器,支持 MySQL、Postgres 和 SQLite
- 允許以類型安全的方式構(gòu)建復雜的 SQL 查詢
- 強調(diào)查詢的靈活性和可組合性,可以方便地構(gòu)建動態(tài)查詢
- 適用于需要構(gòu)建復雜 SQL 查詢的項目,尤其是那些對查詢的靈活性和可維護性要求較高的場景
- 適用于對不同數(shù)據(jù)庫以統(tǒng)一方式構(gòu)建查詢的場景
- 數(shù)據(jù)庫支持
Database | Driver |
---|---|
MariaDB | sqlx-mysql |
MySQL | sqlx-mysql |
PostgreSQL | sqlx-postgres |
SQLite | sqlx-sqlite |
rusqlite | rusqlite |
sea-orm:依賴于sqlx,基于seaql構(gòu)建的異步動態(tài)ORM框架,是對seaql的擴展
-
提供了更全面的對象關(guān)系映射(ORM)解決方案
-
適合希望以面向?qū)ο缶幊?#xff08;OOP)的方式進行數(shù)據(jù)庫操作的項目
-
對于大型項目或者需要進行復雜數(shù)據(jù)庫操作和實體關(guān)系管理的場景,SeaORM可以提高開發(fā)效率
-
數(shù)據(jù)庫支持
Database | URL |
---|---|
MySQL | mysql://root:root@localhost:3306 |
PostgreSQL | postgres://root:root@localhost:5432 |
SQLite(在文件中) | sqlite:./sqlite.db?mode=rwc |
SQLite(在內(nèi)存中) | sqlite::memory: |
Rust AI
burn:用 Rust 構(gòu)建的極高的靈活性、計算效率和可移植性的深度學習框架,是一個高級別的機器學習框架,可以用如Candle這類低級別的深度學習框架作為后端
- WGPU (WebGPU):跨平臺 GPU 后端
- Candle:使用 Candle 綁定的后端
- LibTorch:使用 LibTorch 綁定的后端
- NdArray:使用 NdArray 原語作為數(shù)據(jù)結(jié)構(gòu)的后端
- autodiff:將反向傳播引入任何后端的后端裝飾器
- Fusion:將內(nèi)核融合引入支持它的后端的后端裝飾器
candle_core:Huggingface維護的機器學習框架