从 Actix-web 到 Salvo:Rust Web 开发体验对比
作为一名 Rust Web 服务开发者,选择框架往往比写业务逻辑更耗时。本文将对比 Actix-web 与 Salvo 两个框架在开发体验、性能及维护成本上的差异。
一、开发体验
1. 路由定义
Actix-web 的路由定义较为繁琐,需嵌套 Scope 和 Resource。Salvo 采用链式调用,结构更清晰。
// Actix-web 示例
App::new()
.service(web::scope("/users")
.route("", web::get().to(list_users))
.route("/{id}", web::get().to(get_user)))
// Salvo 示例
let user_router = Router::new()
.get("/list", list_users)
.get("/{id}", get_user)
.post("/create", create_user);
2. 语法糖与代码量
Salvo 提供了更简洁的语法糖,减少样板代码。
#[handler]
async fn register(req: Json<RegisterRequest>) -> Result<Json<User>, StatusCode> {
let user = User::create(req.name, req.email, req.password.hash());
let token = Jwt::generate(&user.id);
Ok(Json(user).with_header("Authorization", token))
}

