Rust أصبحت الخيار الأول للمطورين الذين يبحثون عن الأداء والأمان معاً. في هذا المقال، نبني API مكتملاً باستخدام Axum framework ويتم قياس أدائه مقارنة بـ Go و Node.js.
لماذا Rust للـ APIs؟
- الأداء: أسرع من Go و 10 أضعاف Node.js في اختبارات الـ throughput
- الأمان: نظام Ownership يمنع memory leaks و data races في وقت الترجمة
- التوازي: async/await أصلي وفعال مع Tokio runtime
- التكلفة: استهلاك ذاكرة أقل يعني تكلفة سيرفر أقل
الكود الأساسي
main.rs
use axum::{Router, Json, extract::Path};
use serde::{Deserialize, Serialize};
use tower_http::cors::CorsLayer;
use serde::{Deserialize, Serialize};
use tower_http::cors::CorsLayer;
#[derive(Serialize, Deserialize)]
struct User {
id: u64,
name: String,
email: String,
}
async fn get_user(Path(id): Path<u64>) -> Json<User> {
Json(User {
id,
name: “أحمد”.into(),
email: “ahmed@example.com”.into(),
})
}
#[tokio::main]
async fn main() {
let app = Router::new()
.route(“/users/:id”, axum::routing::get(get_user))
.layer(CorsLayer::permissive());
let listener = tokio::net::TcpListener
.bind(“0.0.0.0:3000”).await.unwrap();
axum::serve(listener, app).await.unwrap();
}
نتائج Benchmark
Rust/Axum
142K rps
Go/Echo
112K rps
Node.js/Express
38K rps
Python/FastAPI
22K rps
0 تعليق