أساسيات clap
تحليل المعاملات
أساسيات clap درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
Why clap?
يُعدّ clap (محلل وسيطات سطر الأوامر) الحزمة المعيارية الفعلية لبناء واجهات سطر الأوامر (CLI) في لغة Rust.
- يحلل الوسيطات، والأعلام، والخيارات
- يُنشئ
--helpو--versionتلقائياً - يتحقق من صحة المدخلات ويبلغ عن أخطاء ودية
بدونه، سيتعين عليك التكرار يدوياً على std::env::args() والتعامل مع كل حالة حافة بنفسك.
قراءة الوسائط يدويًا
قبل استخدام clap، من المفيد رؤية الأسلوب الخام. تُرجع std::env::args() مكرّرًا يكون أول عنصر فيه اسم البرنامج.
fn main() {
let args: Vec<String> = std::env::args().collect();
println!("Program: {}", args[0]);
println!("Got {} extra arg(s)", args.len() - 1);
}إضافة clap إلى Cargo.toml
لاستخدام clap، عليك التصريح بها كتَبعية. تتيح ميزة derive واجهة برمجة التطبيقات المعتمدة على الماكرو.
cargo add clap --features derive
تُنفّذ هذه الخطوة في الطرفية وتعدّل ملفات مشروعك، لذلك لا ننفّذها هنا.
[dependencies]
clap = { version = "4", features = ["derive"] }واجهة builder API
توفر clap أسلوبين. تنشئ واجهة builder API كائن Command أثناء التشغيل، عبر ربط استدعاءات الأساليب.
use clap::{Command, Arg};
fn main() {
let cmd = Command::new("greet")
.arg(Arg::new("name"));
let matches = cmd.get_matches();
// access values from matches
}الوسائط الموضعية
تُمرّر الوسيطة الموضعية حسب ترتيبها، لا بواسطة راية. تُقرأ name هنا مباشرةً من سطر الأوامر.
- تعيّن
greet Aliceقيمة name إلى Alice
use clap::{Command, Arg};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("name").required(true))
.get_matches();
let name = m.get_one::<String>("name").unwrap();
println!("Hello, {}!", name);
}الرايات الاختيارية
الراية مفتاح منطقي. استخدم ArgAction::SetTrue لكي يؤدي وجودها إلى تغيير قيمة bool.
- تفعّل
--loudالراية
use clap::{Command, Arg, ArgAction};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("loud").long("loud").action(ArgAction::SetTrue))
.get_matches();
let loud = m.get_flag("loud");
println!("loud = {}", loud);
}الخيارات ذات القيم
يأخذ الخيار قيمة، مثل --count 3. امنحه اسمًا short واسمًا long لتسهيل استخدامه.
use clap::{Command, Arg};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("count").short('c').long("count"))
.get_matches();
if let Some(c) = m.get_one::<String>("count") {
println!("count = {}", c);
}
}القيم الافتراضية
امنح الوسيطة قيمة احتياطية باستخدام default_value حتى يتمكّن المستخدمون من حذفها.
- إذا لم توجد
--count، تصبح قيمتها 1
use clap::{Command, Arg};
fn main() {
let m = Command::new("greet")
.arg(Arg::new("count").long("count").default_value("1"))
.get_matches();
let count = m.get_one::<String>("count").unwrap();
println!("count = {}", count);
}محاكاة النتيجة
حتى من دون تثبيت clap، يمكننا تمثيل شكل القيم التي جرى تحليلها. إليك نموذجًا بديلًا بلغة Rust العادية يوضّح المنطق الذي تنفّذه clap نيابةً عنا.
fn main() {
let name = "Alice";
let count: u32 = 3;
for _ in 0..count {
println!("Hello, {}!", name);
}
}مساعدة مُنشأة تلقائيًا
تنشئ clap الخيار --help مجانًا من البيانات الوصفية لوسائطك. أضف سلسلتي about وhelp لجعلها مفيدة.
use clap::{Command, Arg};
fn main() {
Command::new("greet")
.about("Greets a person")
.arg(Arg::new("name").help("Who to greet"))
.get_matches();
}راية الإصدار
حدّد الإصدار مرة واحدة، وستجهّز clap الخيار --version تلقائيًا. تجلب وحدة الماكرو crate_version! الإصدار من Cargo.toml.
use clap::Command;
fn main() {
Command::new("greet")
.version("1.0.0")
.get_matches();
}اختبار سريع
اختبر فهمك لأساسيات clap.
مراجعة
لقد تعلّمت أساسيات clap:
- أضفها مع ميزة
derive - تستخدم واجهة builder API كائنَي
CommandوArg - تُرتّب الوسائط الموضعية، وتستخدم الرايات
SetTrue، بينما تأخذ الخيارات قيمًا - يوفر
default_valueقيمًا احتياطية - يُنشأ الخياران
--helpو--versionتلقائيًا
ستتعلّم بعد ذلك تنظيم واجهات CLI الأكبر باستخدام الأوامر الفرعية.
الأسئلة الشائعة
هل درس «أساسيات clap» مجاني؟
نعم — نص درس «أساسيات clap» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
ماذا ستتعلم في «أساسيات clap»؟
تحليل المعاملات تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟
لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أساسيات clap»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟
نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.