Learn Rust Coding · Pelajaran

Subperintah

CLI yang terstruktur

Pelajaran 2 dari 413 langkah

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_required dan alias agar lebih rapi

Selanjutnya: API derive mengubah struct menjadi pengurai argumen.

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 “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.

Semua pelajaran dalam kursus ini

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