Belajar Pengaturcaraan Rust · Pelajaran

API Derive

Argumen daripada struct

Pelajaran 3 daripada 413 langkah

API Derive ialah pelajaran Belajar Pengaturcaraan Rust percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Belajar Pengaturcaraan Rust, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Belajar Pengaturcaraan Rust merangkumi sejumlah 4 pelajaran.

API derive

API derive membolehkan anda menerangkan CLI sebagai struct dan membiarkan clap menjana penghurai melalui #[derive(Parser)].

  • Kurang kod asas berbanding API builder
  • Selamat dari segi jenis: medan menjadi nilai berjenis

Dayakannya dengan ciri derive.

Struct Parser minimum

Anotasikan struct dengan #[derive(Parser)] dan panggil Cli::parse() dalam main. Setiap medan ialah satu argumen.

use clap::Parser;

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

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

Medan menjadi kedudukan

Medan biasa seperti name: String ialah argumen kedudukan yang diperlukan. Nama medan menjadi nama nilainya.

use clap::Parser;

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

Medan pilihan

Bungkus medan dalam Option untuk menjadikannya pilihan. Jika pengguna tidak memberikannya, anda mendapat None.

use clap::Parser;

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

Bendera dan bentuk pendek/panjang

Atribut #[arg(short, long)] memperoleh -v dan --verbose daripada nama medan. Medan bool menjadi suis.

use clap::Parser;

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

Nilai berjenis

clap menghurai input mengikut jenis medan. Medan u32 secara automatik menolak input bukan angka.

use clap::Parser;

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

Memodelkan Cli yang telah dihurai

Selepas dihurai, struct Cli hanyalah data biasa. Versi yang boleh dijalankan ini menunjukkan cara anda menggunakan medan selepas 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 ialah satu perintah.

use clap::{Parser, Subcommand};

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

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

Memadankan subperintah enum

Selepas Cli::parse(), padankan enum untuk melakukan penghantaran. Data varian boleh dinyahstrukturkan dengan kemas.

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 boleh membaca maklumat daripada Cargo secara automatik.

use clap::Parser;

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

Menunjukkan penghantaran enum

Pola memadankan enum ialah teras subperintah derive. Berikut ialah idea yang sama dalam Rust yang serba lengkap.

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

Semakan pantas

Uji pemahaman anda tentang API derive.

Ringkasan

API derive menukarkan struct menjadi penghurai:

  • #[derive(Parser)] bersama Cli::parse()
  • Medan biasa ialah argumen kedudukan; Option menjadikannya pilihan
  • #[arg(short, long)] memperoleh bendera dan pilihan
  • Enum #[derive(Subcommand)] memodelkan subperintah

Seterusnya: pengesahan dan output bantuan yang lebih kemas.

Percuma untuk bermula

Pelajari Rust dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
39
Pelajaran
144

Soalan Lazim

Adakah pelajaran “API Derive” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Belajar Pengaturcaraan Rust, termasuk “API Derive”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Belajar Pengaturcaraan Rust merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “API Derive”?

Argumen daripada struct Anda berlatih Belajar Pengaturcaraan Rust menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Belajar Pengaturcaraan Rust?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Belajar Pengaturcaraan Rust di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “API Derive” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Belajar Pengaturcaraan Rust ini?

Ya. Setiap pelajaran Belajar Pengaturcaraan Rust menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Asas clap
  2. Subperintah
  3. API Derive
  4. Pengesahan dan Bantuan
← Kembali ke Belajar Pengaturcaraan Rust