أفضل 10 أطر عمل Rust لتطوير الويب
يغزو Rust بثقة مجال تطوير الويب بفضل أدائه العالي، وأمان الذاكرة، والقدرة على العمل غير المتزامن. إذا كنت تبحث عن إطار عمل موثوق لبناء تطبيقات ويب باستخدام Rust، فإن هذه النظرة العامة ستساعدك على اتخاذ القرار الصحيح. سنستعرض أفضل 10 أطر عمل، وميزاتها، وأمثلة على الكود.
1. Actix-web — الأكثر أداءً
Actix-web هو الرائد من حيث الأداء بين أطر عمل Rust. يعتمد على نموذج Actor و Tokio. مثالي لواجهات API ذات الأحمال العالية.
use actix_web::{get, web, App, HttpServer, Responder};
#[get("/hello/{name}")]async fn greet(name: web::Path<String>) -> impl Responder { format!("Hello {}!", name)}
#[actix_web::main]async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().service(greet) }) .bind(("127.0.0.1", 8080))? .run() .await}2. Axum — حديث ومتكامل بيئياً
تم تطويره بواسطة فريق Tokio. يستخدم خدمات tower و hyper. يتكامل بشكل ممتاز مع sqlx و tower و serde.
use axum::{Router, routing::get, response::Json};use serde_json::{json, Value};
async fn root() -> Json<Value> { Json(json!({"message": "Hello from Axum"}))}
#[tokio::main]async fn main() { let app = Router::new().route("/", get(root)); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); axum::serve(listener, app).await.unwrap();}3. Rocket — البساطة والراحة
موجه نحو البداية السريعة. يستخدم الماكرو لتوجيه المسارات. مثالي للنمذجة الأولية.
#[macro_use] extern crate rocket;
#[get("/<name>")]fn hello(name: &str) -> String { format!("Hello, {}!", name)}
#[launch]fn rocket() -> _ { rocket::build().mount("/", routes![hello])}4. Warp — وظيفي ومرن
يعتمد على المرشحات (Filters). يسمح بتجميع المعالجات كسلاسل متصلة. خيار ممتاز لواجهات API.
use warp::Filter;
#[tokio::main]async fn main() { let hello = warp::path!("hello" / String) .map(|name| format!("Hello, {}!", name));
warp::serve(hello) .run(([127, 0, 0, 1], 3030)) .await;}5. Tide — بسيط وغير متزامن
إطار عمل خفيف الوزن من مبتكري Rust async. واجهة برمجة تطبيقات بسيطة تعتمد على السمات (traits).
use tide::Request;
#[async_std::main]async fn main() -> tide::Result<()> { let mut app = tide::new(); app.at("/").get(|_: Request<()>| async { Ok("Hello, Tide!") }); app.listen("127.0.0.1:8080").await?; Ok(())}6. Poem — حزمة كاملة مع OpenAPI
يدعم التوليد التلقائي لمواصفات OpenAPI. يتكامل مع HTTP/2 و WebSocket.
use poem::{get, handler, listener::TcpListener, Route, Server};
#[handler]fn hello() -> String { "Hello, Poem!".to_string()}
#[tokio::main]async fn main() -> Result<(), std::io::Error> { let app = Route::new().at("/", get(hello)); Server::new(TcpListener::bind("0.0.0.0:3000")) .run(app) .await}7. Salvo — بسيط وقوي
يدعم middleware و WebSocket ونماذج multipart. يحتوي على دعم مدمج لـ OpenAPI.
use salvo::prelude::*;
#[handler]async fn hello(res: &mut Response) { res.render(Text::Plain("Hello, Salvo!"));}
#[tokio::main]async fn main() { let router = Router::new().get(hello); Server::new(TcpListener::bind("0.0.0.0:5800")) .serve(router) .await;}8. Gotham — غير متزامن وآمن
يستخدم الكتابة الصارمة (strict typing) والأمان على مستوى الترجمة. مناسب للتطبيقات المعقدة.
use gotham::state::State;use gotham::r