Sintaks Rust
Sekarang kamu sudah bisa menjalankan Rust. Ayo pelan-pelan melihat apa sebenarnya arti setiap bagian sebuah program. Kita pakai contoh sekecil mungkin, lalu membongkarnya satu per satu.
fn main() { println!("Halo, dunia!");}Output:
Halo, dunia!Fungsi main
Section titled “Fungsi main”fn main() { // kodemu dijalankan di sini}Setiap program Rust dimulai dari sebuah fungsi bernama main. Saat kamu menjalankan programmu, Rust mencari main dan menjalankan kode di dalamnya.
fnadalah keyword untuk mendefinisikan fungsi (sekumpulan kode yang diberi nama).mainadalah nama fungsinya. Nama yang satu ini istimewa, karena menjadi titik awal (entry point) program.()berisi input untuk fungsi tersebut (di sini kosong, karenamaintidak menerima input apa pun).- Kurung kurawal
{ }membungkus body (badan fungsi), yaitu kode yang menjadi milik fungsi itu.
Statement diakhiri titik koma
Section titled “Statement diakhiri titik koma”Di dalam body, setiap instruksi biasanya berupa statement (pernyataan), dan statement diakhiri dengan titik koma ;:
fn main() { let x = 5; let y = 10; println!("{}", x + y);}Output:
15Lupa menulis titik koma di tempat yang seharusnya adalah salah satu kesalahan paling umum di kalangan pemula, dan compiler akan langsung menunjuk ke situ.
Expression: kode yang menghasilkan nilai
Section titled “Expression: kode yang menghasilkan nilai”Kode Rust terdiri dari dua jenis potongan, dan perbedaannya lebih penting di Rust daripada di kebanyakan bahasa lain:
- Statement melakukan sesuatu tapi tidak menghasilkan nilai.
let x = 5;adalah statement. - Expression (ekspresi) menghasilkan sebuah nilai.
5,x + 1, danx * 2semuanya adalah expression.
Ini bagian yang sering bikin kaget: blok kode di dalam kurung kurawal { } juga merupakan expression. Nilainya adalah baris terakhir yang ditulis tanpa titik koma:
fn main() { let x = 5; let y = { let doubled = x * 2; // sebuah statement di dalam blok doubled + 1 // tanpa titik koma: ini nilai bloknya }; println!("y bernilai {y}");}Output:
y bernilai 11Blok itu menjalankan statement-statement di dalamnya, lalu mengembalikan doubled + 1, yaitu 11, dan nilai itulah yang menjadi y. Perhatikan titik koma setelah } penutup: seluruh baris let y = ...; tetaplah sebuah statement.
Kalau kamu menambahkan titik koma setelah doubled + 1, baris itu tidak lagi menjadi nilai bloknya. Blok tersebut lalu mengembalikan “tidak ada apa-apa” (Rust menuliskannya sebagai ()), dan println! tidak bisa mencetaknya, jadi kodenya tidak akan bisa di-compile. Aturan “baris terakhir tanpa titik koma” ini persis cara fungsi mengembalikan nilai. Kamu akan melihatnya lagi di halaman Fungsi dan di if sebagai expression.
Makro dan tanda !
Section titled “Makro dan tanda !”Perhatikan baik-baik println!. Tanda seru itu bukan salah ketik. Tanda ! berarti ini adalah makro (macro), bukan fungsi biasa.
Kamu belum perlu memahami makro sepenuhnya. Cukup ingat ini: kalau kamu melihat !, berarti itu makro. Untuk sekarang, satu-satunya makro yang akan kamu pakai adalah println! untuk mencetak teks.
fn main() { println!("Ini pemanggilan makro");}Mencetak nilai dengan {}
Section titled “Mencetak nilai dengan {}”Di dalam println!, kurung kurawal {} adalah placeholder (tempat kosong) yang akan diisi dengan nilai-nilai yang kamu berikan setelah teksnya:
fn main() { let name = "Ferris"; let age = 10; println!("{} berumur {} tahun", name, age);}Output:
Ferris berumur 10 tahunKamu juga bisa langsung menulis nama variabel di dalam kurung kurawal, yang sering kali lebih rapi:
println!("{name} berumur {age} tahun");Spasi dan indentasi
Section titled “Spasi dan indentasi”Rust tidak peduli dengan indentasi seperti Python. Rust memakai kurung kurawal { } untuk mengetahui di mana sebuah blok dimulai dan berakhir. Indentasi hanya untuk memudahkan manusia membaca kodenya.
Meski begitu, komunitas Rust punya gaya penulisan standar, dan Rust menyediakan tool untuk menerapkannya secara otomatis:
cargo fmtMenjalankan cargo fmt akan merapikan kodemu sesuai gaya resmi. Biasakan memakainya.
Komentar
Section titled “Komentar”Kamu bisa meninggalkan catatan di kodemu yang diabaikan oleh Rust. Catatan ini disebut komentar, dan diawali dengan //:
fn main() { // Ini komentar, Rust melewatinya println!("Halo!"); // komentar juga bisa ditaruh di akhir baris}Kita akan membahas komentar lebih detail di halaman berikutnya.
Latihan
Section titled “Latihan”1. Tunjukkan hitunganmu
Section titled “1. Tunjukkan hitunganmu”Buat dua variabel, a = 7 dan b = 3, lalu cetak 7 + 3 = 10. Biarkan Rust yang melakukan penjumlahannya. Petunjuk: sebuah println! bisa punya beberapa placeholder {}, yang diisi berurutan oleh nilai-nilai setelah teksnya.
Lihat solusi
fn main() { let a = 7; let b = 3; println!("{} + {} = {}", a, b, a + b);}Output:
7 + 3 = 102. Blok yang menghitung total
Section titled “2. Blok yang menghitung total”Sebuah toko menjual 3 barang dengan harga 4 per barang, ditambah 2 untuk ongkos kirim. Hitung total dengan sebuah blok { }: di dalamnya, buat subtotal, lalu kembalikan subtotal + 2. Cetak Total: 14. Petunjuk: baris terakhir blok tidak boleh diberi titik koma.
Lihat solusi
fn main() { let price = 4; let quantity = 3; let total = { let subtotal = price * quantity; subtotal + 2 // ongkos kirim }; println!("Total: {total}");}Output:
Total: 14Ringkasan
Section titled “Ringkasan”- Setiap program dimulai dari fungsi
main. - Kode ditulis di dalam kurung kurawal
{ }; kebanyakan statement diakhiri dengan;. - Statement melakukan sesuatu; expression menghasilkan nilai. Baris terakhir sebuah blok yang ditulis tanpa
;adalah nilai blok tersebut. - Tanda
!(seperti diprintln!) berarti itu sebuah makro. {}di dalamprintln!adalah placeholder yang diisi oleh nilai-nilai yang kamu berikan.- Indentasi hanya untuk keterbacaan. Jalankan
cargo fmtuntuk merapikan kode secara otomatis.
Kuis singkat
Section titled “Kuis singkat”Kuis singkat
1. Apa yang istimewa dari fungsi main di program Rust?
2. Apa arti tanda ! setelah println?
3. Berapa nilai y setelah let y = { let a = 2; a + 1 };?
Skor: 0 / 3
Bacaan lebih lanjut
Section titled “Bacaan lebih lanjut”- Anatomy of a Rust Program — The Rust Book (bahasa Inggris): penjelasan resmi tentang
fn main,println!, dan titik koma. - Statements and Expressions — The Rust Book (bahasa Inggris): lebih banyak contoh perbedaan statement dan expression, termasuk blok.
- Hello World — Rust by Example (bahasa Inggris): program kecil yang bisa dijalankan, plus cara meng-compile-nya langsung dengan
rustc. - Expressions — Rust by Example (bahasa Inggris): contoh singkat blok yang dipakai sebagai nilai, dan apa yang terjadi kalau ada titik koma di akhir.
- Statements and expressions — The Rust Reference (bahasa Inggris): aturan formal yang lengkap dan tepat, untuk nanti saat kamu penasaran.