构建高性能、可靠的后端系统时,Rust 的标准库为了保持精简,并没有内置 Web 框架、数据库驱动或复杂的序列化工具。这种设计将选择权交给了开发者。经过社区多年的迭代,一些库已经脱颖而出,成为生产环境的事实标准。

以下是开发 Rust 后端项目时建议优先考虑的 9 个核心库,太夯了。
1. Serde 与 Serde_json
数据在网络中流动通常需要转换格式。Serde 采用零成本抽象的设计,在编译阶段生成序列化与反序列化代码,避免了运行时的反射开销。配合 serde_json,处理 JSON 数据会变得非常自然。
rust
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct UserProfile {
#[serde(rename = "username")]
name: String,
// 忽略空字段,保持输出整洁
#[serde(skip_serializing_if = "Option::is_none")]
nickname: Option<String>,
}
fn handle_json() {
let data = r#"{"username": "rust_dev"}"#;
let user: UserProfile = serde_json::from_str(data).expect("解析失败");
let output = serde_json::to_string(&user).unwrap();
}
2. Tower-http
如果使用 Axum 这种 Web 框架,Tower-http 是不可或缺的组件。它提供了一系列现成的中间件,用来处理跨域、请求压缩、超时控制等常见的 HTTP 逻辑。
它可以通过组合不同的层(Layer)来增强服务功能。例如,开启压缩支持和跨域策略只需要几行配置。
rust
use tower_http::{cors::Any, cors::CorsLayer, compression::CompressionLayer};
use ax_router::Router; // 假设使用 axum
let app = Router::new()
.route("/", get(|| async { "ok" }))
.layer(CorsLayer::new().allow_origin(Any))
.layer(CompressionLayer::new());
3. Sea-ORM
Sea-ORM 是一个基于 SQLx 构建的异步 ORM 框架。对于习惯了动态语言 ORM(如 Django 或 ActiveRecord)的开发者,Sea-ORM 提供了更友好的链式查询接口。它支持自动生成实体类,并且能很好地处理复杂的关联查询,同时保留了异步执行的优势。
rust
use sea_orm::{entity::*, query::*, Database};
// 查找状态为激活的所有用户
async fn get_active_users(db: &DatabaseConnection) -> Vec<user::Model> {
user::Entity::find()
.filter(user::Column::Status.eq("active"))
.all(db)
.await
.unwrap_or_default()
}
4. JSONWebToken
在无状态的 REST API 中,JWT 是身份验证的主流方案。这个库实现了 JWT 的签名与验证逻辑,支持 HS256、RS256 等多种算法。它配合 Serde 使用,可以将自定义的 Claims 直接映射为 Rust 结构体。
rust
use jsonwebtoken::{encode, Header, EncodingKey};
use serde::{Serialize, Deserialize};
#[derive(Debug, Serialize, Deserialize)]
struct TokenClaims {
sub: String,
exp: usize,
}
fn create_token(user_id: &str) -> String {
let claims = TokenClaims { sub: user_id.to_owned(), exp: 10000000000 };
encode(&Header::default(), &claims, &EncodingKey::from_secret("secret".as_ref())).unwrap()
}
5. Argon2
存储用户密码时,安全哈希算法的选择非常关键。Argon2 是目前推荐的现代算法,它通过增加内存成本和计算开销来抵御暴力破解。Rust 的 argon2 库易于使用,能有效防止彩虹表攻击。
rust
use argon2::{Argon2, PasswordHasher, PasswordVerifier, password_hash::SaltString};
use argon2::password_hash::rand_core::OsRng;
fn secure_password() {
let pwd = b"my_password";
let salt = SaltString::generate(&mut OsRng);
let argon2 = Argon2::default();
let hash = argon2.hash_password(pwd, &salt).unwrap().to_string();
// 验证逻辑
let parsed_hash = argon2::PasswordHash::new(&hash).unwrap();
assert!(argon2.verify_password(pwd, &parsed_hash).is_ok());
}
6. Prometheus
可观测性是生产环境的要求。prometheus 库允许在代码中埋点,收集请求耗时、并发数、错误频率等指标。这些数据可以被 Prometheus 抓取并在 Grafana 中展示,帮助开发者掌握系统的运行状态。
rust
use prometheus::{Counter, Registry};
lazy_static::lazy_static! {
static ref HTTP_REQUESTS: Counter = Counter::new("http_requests", "请求总数").unwrap();
}
fn track_metric() {
HTTP_REQUESTS.inc();
}
7. Tokio-cron-scheduler
后端服务经常需要处理定时任务,比如每日结算、清理过期缓存等。这个库将 Cron 表达式集成到了 Tokio 异步运行时中,允许在不阻塞主线程的前提下,按照预设的时间表触发异步函数。
rust
use tokio_cron_scheduler::{Job, JobScheduler};
async fn start_scheduler() {
let sched = JobScheduler::new().await.unwrap();
sched.add(Job::new("0 0 1 * * *", |_, _| {
println!("每天凌晨1点执行清理");
}).unwrap()).await.unwrap();
sched.start().await.unwrap();
}
8. Async-graphql
如果需要构建 GraphQL 接口,async-graphql 是目前的首选。它利用 Rust 的类型系统来定义 Schema,能够自动生成文档,并支持强大的 Subscription 功能(基于 WebSocket 的实时数据推送)。它能无缝集成到 Axum 或 Actix-web 中。
rust
use async_graphql::{Object, Schema, EmptyMutation, EmptySubscription};
struct Query;
#[Object]
impl Query {
async fn version(&self) -> &str { "v1.0" }
}
fn build_schema() {
let schema = Schema::build(Query, EmptyMutation, EmptySubscription).finish();
}
9. Mockall
测试是保证代码质量的基础。mockall 可以为 Trait 生成 Mock 对象,这在单元测试中非常有用。通过模拟外部 API 或数据库行为,可以实现真正的隔离测试,确保逻辑分支被完整覆盖。
rust
use mockall::{automock, predicate::*};
#[automock]
trait ExternalApi {
fn fetch_data(&self, id: u32) -> String;
}
#[test]
fn test_business_logic() {
let mut mock = MockExternalApi::new();
mock.expect_fetch_data()
.with(eq(10))
.returning(|_| "mocked_value".to_string());
assert_eq!(mock.fetch_data(10), "mocked_value");
}
配置 Rust 开发环境有时会涉及环境变量、编译器版本以及相关底层库的安装,如果用 ServBay 进行一键部署Rust,就不用管这些乱七八糟的东西了。

ServBay 是一款专为开发者设计的本地开发环境管理工具。它集成了对 Rust 环境的直接支持,直接在图形界面中快速安装 Rust 编译器以及配套的数据库环境,比如 PostgreSQL、Redis等等。
总结
上面的 9 个库涵盖了从数据处理、身份认证到运维监控的完整链路,开发中所需要的基本都能涵盖了。省时省力又省心。