Clap — إطار عمل CLI قوي لـ Rust

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة
```html

ما هو Clap ولماذا هو مطلوب؟

Clap (Command Line Argument Parser) هو واحد من أشهر وأقوى الأطر (frameworks) لإنشاء واجهات سطر الأوامر (CLI) بلغة Rust. يسمح للمطورين بوصف الوسائط (arguments)، والأعلام (flags)، والأوامر الفرعية (subcommands) بسرعة وسهولة، وتوليد التعليمات (help) تلقائياً. يُستخدم Clap في مشاريع معروفة مثل ripgrep و fd و bat. بفضل الكتابة الصارمة (strict typing) في Rust والماكرو (macros)، يوفر Clap الأمان في مرحلة التجميع (compile-time) ويُغني عن التحليل اليدوي للنصوص (manual string parsing).

التثبيت

أضف التبعية (dependency) في ملف Cargo.toml:

[dependencies]clap = { version = "4.5", features = ["derive"] }

العلم (flag) derive يُفعّل دعم الماكرو الإجرائي (procedural macros) - وهذه هي الطريقة الأكثر راحة للاستخدام.

الوظائف الأساسية

  • التحليل التصريحي (Declarative parsing) — وصف الوسائط من خلال الهياكل (structs) والسمات (attributes).
  • التوليد التلقائي للتعليمات (--help).
  • دعم الأوامر الفرعية (مثل: git clone, git push).
  • التحقق من صحة الأنواع (Type validation) — الأرقام، النصوص، الأعلام، التعدادات (enums).
  • الإكمال التلقائي لـ Bash/Zsh/Fish.
  • إخراج الأخطاء بالألوان.

مثال كود بلغة Rust

لنقم بإنشاء آلة حاسبة بسيطة بوضعين: الجمع والطرح.

use clap::Parser;

#[derive(Parser)]#[command(name = "calc", version = "1.0", about = "آلة حاسبة بسيطة")]struct Cli { #[command(subcommand)] command: Commands,}

#[derive(clap::Subcommand)]enum Commands { /// جمع رقمين Add { a: f64, b: f64 }, /// طرح b من a Sub { a: f64, b: f64 },}

fn main() { let cli = Cli::parse(); match cli.command { Commands::Add { a, b } => println!("النتيجة: {}", a + b), Commands::Sub { a, b } => println!("النتيجة: {}", a - b), }}

التشغيل: cargo run -- add 10 5 سيُخرج النتيجة: 15.

متى تستخدم

Clap مثالي لأي أدوات CLI في Rust - من الأدوات المساعدة البسيطة إلى التطبيقات المعقدة متعددة المستويات. استخدمه إذا كنت بحاجة إلى محلل وسائط (argument parser) موثوق، موثق، وسريع مع أقل قدر من الكود. بفضل ماكرو derive، تحصل على كتابة صارمة (strict typing) وتوليد تلقائي للتعليمات دون كود样板 (boilerplate).

إذا كان مشروعك يتطلب أداءً عالياً (مثل معالجة السجلات في الوقت الفعلي) أو تسلسلاً هرمياً معقداً للأوامر، فإن Clap هو الخيار الأفضل. كما أنه يدعم المدققات المخصصة (custom validators) وتحليل متغيرات البيئة (environment variables).

الخلاصة

Clap هو المعيار الفعلي (de facto standard) لـ CLI في نظام Rust البيئي. فهو يجمع بين سهولة مكتبات Python (argparse, click) وأداء Rust وأمانه. ابدأ بـ cargo add clap --features derive وأنشئ أول CLI لك في 5 دقائق.

```

توصيات