Learn Rust Coding · Pelajaran

API Derive

Args dari struct

Pelajaran 3 dari 413 langkah

API Derive adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.

API derive

API derive memungkinkan Anda mendeskripsikan CLI sebagai struct dan membuat clap menghasilkan pengurai melalui #[derive(Parser)].

  • Lebih sedikit kode pendukung dibandingkan API builder
  • Aman terhadap tipe: field menjadi nilai bertipe

Aktifkan dengan fitur derive.

Struct Parser minimal

Beri anotasi pada struct dengan #[derive(Parser)] dan panggil Cli::parse() di main. Setiap field menjadi satu argumen.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    name: String,
}

fn main() {
    let cli = Cli::parse();
    println!("Hello, {}!", cli.name);
}

Field menjadi argumen posisi

Field biasa seperti name: String adalah argumen posisi yang wajib diisi. Nama field menjadi nama nilainya.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    input: String,
    output: String,
}

Field opsional

Bungkus field dengan Option agar menjadi opsional. Jika pengguna tidak mengisinya, Anda mendapatkan None.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    #[arg(short, long)]
    config: Option<String>,
}

Flag serta bentuk singkat/panjang

Atribut #[arg(short, long)] menurunkan -v dan --verbose dari nama field. Field bool menjadi sakelar.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    #[arg(short, long)]
    verbose: bool,
}

Nilai bertipe

clap mengurai menjadi tipe field tersebut. Field u32 secara otomatis menolak input yang bukan angka.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    #[arg(short, long, default_value_t = 1)]
    count: u32,
}

Memodelkan Cli yang telah diurai

Setelah diurai, struct Cli hanyalah data biasa. Versi yang dapat dijalankan ini menunjukkan cara menggunakan field setelah penguraian.

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);
    }
}

Subperintah sebagai enum

Dengan API derive, enum #[derive(Subcommand)] memodelkan subperintah. Setiap varian adalah sebuah perintah.

use clap::{Parser, Subcommand};

#[derive(Parser)]
struct Cli {
    #[command(subcommand)]
    cmd: Commands,
}

#[derive(Subcommand)]
enum Commands {
    Add { task: String },
    List,
}

Mencocokkan subperintah enum

Setelah Cli::parse(), cocokkan enum untuk melakukan pengiriman. Data varian dapat diurai strukturnya dengan rapi.

use clap::Parser;

fn run(cli: Cli) {
    match cli.cmd {
        Commands::Add { task } => println!("add {}", task),
        Commands::List => println!("list"),
    }
}

Metadata melalui atribut command

Letakkan #[command(name, version, about)] pada struct untuk menetapkan metadata CLI. version dapat membaca versi dari Cargo secara otomatis.

use clap::Parser;

#[derive(Parser)]
#[command(name = "greet", version, about = "Greets people")]
struct Cli {
    name: String,
}

Mendemonstrasikan pengiriman enum

Pola mencocokkan enum adalah inti subperintah derive. Berikut gagasan yang sama dalam Rust mandiri.

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"),
    }
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang API derive.

Rangkuman

API derive mengubah struct menjadi pengurai:

  • #[derive(Parser)] ditambah Cli::parse()
  • Field biasa menjadi argumen posisi; Option menjadikannya opsional
  • #[arg(short, long)] menurunkan flag dan opsi
  • Enum #[derive(Subcommand)] memodelkan subperintah

Selanjutnya: validasi dan keluaran bantuan yang lebih rapi.

Gratis untuk memulai

Belajar Rust dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
39
Pelajaran
144

Pertanyaan yang Sering Diajukan

Apakah pelajaran “API Derive” gratis?

Ya — teks lengkap “API Derive” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “API Derive”?

Args dari struct Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “API Derive” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar clap
  2. Subperintah
  3. API Derive
  4. Validasi dan Bantuan
← Kembali ke Learn Rust Coding