Subperintah
CLI yang terstruktur
Subperintah adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 2 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.
Apa Itu Subperintah?
Subperintah memungkinkan satu biner menyediakan beberapa tindakan, seperti git commit dan git push.
- Setiap subperintah memiliki argumennya sendiri
- Strukturnya dapat berkembang seiring CLI Anda bertambah besar
clap memodelkannya dengan nilai Command bertingkat.
Menambahkan Subperintah
Pasangkan perintah anak dengan .subcommand(). Perintah induk kemudian menjadi pengatur pengiriman.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand(Command::new("add"))
.subcommand(Command::new("list"))
.get_matches();
}Mencocokkan Subperintah yang Dipilih
Setelah penguraian, subcommand() memberi tahu Anda anak perintah mana yang dijalankan. Cocokkan namanya untuk menentukan pengiriman.
use clap::Command;
fn main() {
let m = Command::new("todo")
.subcommand(Command::new("add"))
.subcommand(Command::new("list"))
.get_matches();
match m.subcommand() {
Some(("add", _)) => println!("adding"),
Some(("list", _)) => println!("listing"),
_ => println!("no subcommand"),
}
}Args di Dalam Subperintah
Subperintah membawa argumennya sendiri. Perintah add di bawah menerima deskripsi task.
use clap::{Command, Arg};
fn main() {
Command::new("todo")
.subcommand(
Command::new("add")
.arg(Arg::new("task").required(true))
)
.get_matches();
}Membaca Args Subperintah
Elemen kedua tuple tersebut adalah ArgMatches subperintah. Ambil nilai darinya seperti pada tingkat teratas.
use clap::{Command, Arg};
fn main() {
let m = Command::new("todo")
.subcommand(Command::new("add").arg(Arg::new("task")))
.get_matches();
if let Some(("add", sub)) = m.subcommand() {
let task = sub.get_one::<String>("task").unwrap();
println!("add: {}", task);
}
}Mewajibkan Subperintah
Gunakan subcommand_required(true) agar menjalankan biner tanpa argumen menampilkan bantuan alih-alih tidak melakukan apa-apa.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand_required(true)
.arg_required_else_help(true)
.subcommand(Command::new("list"))
.get_matches();
}Memodelkan Pengiriman dalam Rust Biasa
Inti CLI dengan subperintah adalah pencocokan pada sebuah string. Contoh yang dapat dijalankan ini mencerminkan logika pengiriman tersebut.
fn main() {
let cmd = "add";
let task = "Buy milk";
match cmd {
"add" => println!("Added: {}", task),
"list" => println!("Listing tasks"),
other => println!("Unknown command: {}", other),
}
}Subperintah Bertingkat
Subperintah dapat memiliki subperintahnya sendiri, misalnya cargo build --release atau pohon yang lebih dalam. Cukup tambahkan lebih banyak pemanggilan .subcommand().
use clap::Command;
fn main() {
Command::new("app")
.subcommand(
Command::new("config")
.subcommand(Command::new("get"))
.subcommand(Command::new("set"))
)
.get_matches();
}Bantuan untuk setiap subperintah
Setiap subperintah memiliki halaman --help sendiri. Tambahkan string about untuk menjelaskannya.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand(
Command::new("add").about("Add a new task")
)
.get_matches();
}Alias
Berikan pintasan kepada pengguna dengan visible_alias. Kini ls berfungsi sama seperti list.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand(
Command::new("list").visible_alias("ls")
)
.get_matches();
}Mengembalikan kode keluar
CLI yang baik memberi sinyal keberhasilan atau kegagalan. Kembalikan kode nonnol dari subperintah menggunakan std::process::exit atau dengan mengembalikan Result dari main.
fn main() {
let success = true;
if !success {
std::process::exit(1);
}
println!("ok");
}Pemeriksaan Singkat
Uji pemahaman Anda tentang subperintah.
Rangkuman
Sekarang Anda dapat membangun CLI terstruktur dengan subperintah:
- Tambahkan turunan dengan
.subcommand() - Lakukan pengiriman dengan mencocokkan
m.subcommand() - Setiap subperintah memiliki argumen dan halaman bantuan sendiri
- Gunakan
subcommand_requireddan alias agar lebih rapi
Selanjutnya: API derive mengubah struct menjadi pengurai argumen.
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 “Subperintah” gratis?
Ya — teks lengkap “Subperintah” 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 “Subperintah”?
CLI yang terstruktur 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 2 dari 4.
Berapa lama pelajaran “Subperintah” 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.