Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Project I/O: Bikin Program Command Line

Bab ini adalah rangkuman dari banyak skill yang udah kita pelajari sejauh ini dan sebuah eksplorasi ke beberapa fitur standard library lainnya. Kita bakal bikin alat (tool) command line yang berinteraksi sama file dan input/output dari command line buat melatih beberapa konsep Rust yang sekarang udah kita kuasai.

Kecepatan, keamanan, output binary tunggal, dan dukungan lintas platform bikin Rust jadi bahasa yang ideal buat bikin alat command line, jadi buat project kita ini, kita bakal bikin versi kita sendiri dari alat pencarian command line klasik grep (globally search a regular expression and print). Di skenario penggunaan paling sederhana, grep mencari string tertentu di dalam file yang ditentukan. Buat ngelakuin itu, grep menerima path (jalur) file dan sebuah string sebagai argumennya. Lalu dia ngebaca file tersebut, nyari baris-baris di file itu yang mengandung argumen string tadi, terus mencetak baris-baris itu.

Di sepanjang jalan, kita bakal nunjukin gimana cara bikin alat command line kita memakai fitur terminal yang dipakai sama banyak alat command line lainnya. Kita bakal ngebaca nilai dari environment variable buat ngebolehin user mengonfigurasi perilaku alat kita. Kita juga bakal mencetak pesan error ke stream konsol standard error (stderr) bukannya standard output (stdout) sehingga, misalnya, user bisa me-redirect (mengalihkan) output yang sukses ke sebuah file tapi tetap bisa melihat pesan error di layar.

Salah satu anggota komunitas Rust, Andrew Gallant, udah bikin versi grep yang berfitur lengkap dan kenceng sekali, namanya ripgrep. Sebagai perbandingan, versi kita bakal lumayan sederhana, tapi bab ini bakal ngasih kita beberapa pengetahuan dasar yang kita butuhin buat paham project dunia nyata kayak ripgrep.

Project grep kita bakal nggabungin sejumlah konsep yang udah kita pelajari sejauh ini:

  • Mengorganisasi kode (Bab 7)
  • Memakai vectors dan strings (Bab 8)
  • Menangani errors (Bab 9)
  • Memakai traits dan lifetimes di tempat yang tepat (Bab 10)
  • Nulis pengujian (tests) (Bab 11)

Kita juga bakal ngenalin secara singkat closures, iterators, dan trait objects, yang bakal dibahas lebih detail di Bab 13 dan Bab 18.