API Derive
Argumen daripada struct
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)]bersamaCli::parse()- Medan biasa ialah argumen kedudukan;
Optionmenjadikannya pilihan #[arg(short, long)]memperoleh bendera dan pilihan- Enum
#[derive(Subcommand)]memodelkan subperintah
Seterusnya: pengesahan dan output bantuan yang lebih kemas.
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.