واجهة Derive البرمجية
إنشاء Args من Structs
واجهة Derive البرمجية درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
واجهة derive API
تتيح لك واجهة derive API وصف واجهة CLI كبنية، وتجعل clap تنشئ المحلل عبر #[derive(Parser)].
- شفرة متكررة أقل من واجهة builder API
- أمان من ناحية الأنواع: تتحول الحقول إلى قيم ذات أنواع محددة
فعّلها باستخدام ميزة derive.
بنية Parser بسيطة
أضف التعليق #[derive(Parser)] إلى بنية، واستدعِ Cli::parse() في main. ويمثل كل حقل وسيطة واحدة.
use clap::Parser;
#[derive(Parser)]
struct Cli {
name: String,
}
fn main() {
let cli = Cli::parse();
println!("Hello, {}!", cli.name);
}تحول الحقول إلى وسيطة موضعية
يكون الحقل العادي مثل name: String وسيطة موضعية مطلوبة. ويصبح اسم الحقل اسم القيمة.
use clap::Parser;
#[derive(Parser)]
struct Cli {
input: String,
output: String,
}الحقول الاختيارية
غلّف الحقل داخل Option لجعله اختياريًا. إذا حذفه المستخدم، تحصل على None.
use clap::Parser;
#[derive(Parser)]
struct Cli {
#[arg(short, long)]
config: Option<String>,
}الرايات والأسماء القصيرة والطويلة
تشتق السمة #[arg(short, long)] الخيارين -v و--verbose من اسم الحقل. ويتحول الحقل من النوع bool إلى مفتاح تبديل.
use clap::Parser;
#[derive(Parser)]
struct Cli {
#[arg(short, long)]
verbose: bool,
}القيم ذات الأنواع المحددة
تحلّل clap القيمة وفق نوع الحقل. ويرفض حقل من النوع u32 الإدخال غير الرقمي تلقائيًا.
use clap::Parser;
#[derive(Parser)]
struct Cli {
#[arg(short, long, default_value_t = 1)]
count: u32,
}نمذجة Cli بعد تحليلها
بعد التحليل، تصبح بنية Cli بيانات عادية. يوضّح هذا الإصدار القابل للتشغيل كيفية استخدام الحقول بعد التحليل.
struct Cli {
name: String,
count: u32,
verbose: bool,
}
fn main() {
let cli = Cli { name: "Alice".to_string(), count: 2, verbose: true };
for _ in 0..cli.count {
println!("Hello, {}! (verbose={})", cli.name, cli.verbose);
}
}الأوامر الفرعية كتعدادات
تُمثّل التعدادات ذات السمة #[derive(Subcommand)] الأوامر الفرعية باستخدام واجهة derive API. ويمثل كل متغيّر أمرًا.
use clap::{Parser, Subcommand};
#[derive(Parser)]
struct Cli {
#[command(subcommand)]
cmd: Commands,
}
#[derive(Subcommand)]
enum Commands {
Add { task: String },
List,
}مطابقة الأوامر الفرعية في التعداد
بعد Cli::parse()، طابِق التعداد لتوزيع التنفيذ. وتُفكّك بيانات المتغيّر بسهولة.
use clap::Parser;
fn run(cli: Cli) {
match cli.cmd {
Commands::Add { task } => println!("add {}", task),
Commands::List => println!("list"),
}
}البيانات الوصفية عبر سمة command
ضع #[command(name, version, about)] على البنية لتعيين البيانات الوصفية لواجهة CLI. ويمكن لـversion القراءة من Cargo تلقائيًا.
use clap::Parser;
#[derive(Parser)]
#[command(name = "greet", version, about = "Greets people")]
struct Cli {
name: String,
}عرض توزيع التعداد
يُعد نمط المطابقة مع التعداد جوهر الأوامر الفرعية في derive. إليك الفكرة نفسها في Rust مكتفية ذاتيًا.
enum Command {
Add(String),
List,
}
fn main() {
let cmd = Command::Add("Write code".to_string());
match cmd {
Command::Add(task) => println!("Added: {}", task),
Command::List => println!("Listing"),
}
}اختبار سريع
اختبر فهمك لواجهة derive API.
مراجعة
تحوّل واجهة derive API البُنى إلى محللات:
#[derive(Parser)]معCli::parse()- الحقول العادية موضعية، ويجعلها
Optionاختيارية - تشتق
#[arg(short, long)]الرايات والخيارات - تمثّل تعدادات
#[derive(Subcommand)]الأوامر الفرعية
التالي: التحقق من الصحة وإخراج المساعدة المصقول.
الأسئلة الشائعة
هل درس «واجهة Derive البرمجية» مجاني؟
نعم — نص درس «واجهة Derive البرمجية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
ماذا ستتعلم في «واجهة Derive البرمجية»؟
إنشاء Args من Structs تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟
لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «واجهة Derive البرمجية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟
نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات clap
- الأوامر الفرعية
- واجهة Derive البرمجية
- التحقق والتعليمات