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

Hello, World!

Sekarang setelah kita memasang Rust, saatnya menulis program Rust pertama kita. Sudah menjadi tradisi ketika belajar bahasa pemrograman baru untuk membuat program kecil yang mencetak teks Hello, world! ke layar, jadi mari kita lakukan hal yang sama di sini!

Catatan: Buku ini mengasumsikan kita memiliki pemahaman dasar tentang command line.
Rust tidak memiliki tuntutan khusus mengenai editor, tools, atau di mana kode kita berada,
jadi jika lebih suka menggunakan integrated development environment (IDE)
daripada command line, silakan gunakan IDE favorit kita sendiri. Banyak IDE sekarang sudah
memiliki dukungan tertentu untuk Rust; periksa dokumentasi IDE untuk detailnya.
Tim Rust berfokus pada peningkatan dukungan IDE melalui rust-analyzer.
Lihat Lampiran D untuk detail lebih lanjut.

Membuat Direktori Proyek

Kita akan mulai dengan membuat sebuah direktori untuk menyimpan kode Rust kita. Rust tidak peduli di mana kode kita berada, tetapi untuk latihan dan proyek dalam buku ini, kami menyarankan untuk membuat direktori projects di direktori home kita dan menyimpan semua proyek di sana.

Buka terminal dan masukkan perintah berikut untuk membuat direktori projects dan sebuah direktori untuk proyek “Hello, world!” di dalam direktori projects.

Untuk Linux, macOS, dan PowerShell di Windows, masukkan perintah ini:

$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world

untuk Command Line Windows, masukkan perintah ini:

> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
> cd hello_world

Selanjutnya, buat sebuah berkas sumber baru dan beri nama main.rs. Berkas Rust selalu diakhiri dengan ekstensi .rs. Jika kita menggunakan lebih dari satu kata dalam nama berkas, konvensinya adalah menggunakan garis bawah (underscore) untuk memisahkan kata-kata tersebut. Misalnya, gunakan hello_world.rs daripada helloworld.rs.

Sekarang buka berkas main.rs yang baru saja kita buat dan masukkan kode pada Listing 1-1.

Filename: main.rs
fn main() {
    println!("Hello, world!");
}
Listing 1-1: Program yang mencetak Hello, world!

Simpan berkas tersebut lalu kembali ke jendela terminal kita di direktori
~/projects/hello_world. Pada Linux atau macOS, masukkan perintah berikut
untuk mengompilasi dan menjalankan berkas:

$ rustc main.rs
$ ./main
Hello, world!

Pada Windows, masukan perintah .\main daripada ./main:

> rustc main.rs
> .\main
Hello, world!

Terlepas dari sistem operasi yang kita gunakan, string Hello, world! seharusnya muncul di terminal. Jika kita tidak melihat output ini, lihat kembali bagian “Troubleshooting” pada bagian Instalasi untuk cara mendapatkan bantuan.

Jika Hello, world! berhasil tercetak, selamat! Kita secara resmi telah menulis program Rust. Itu berarti kita sudah menjadi seorang pemrogram Rust—selamat datang!

Anatomi Program Rust

Mari kita ulas program “Hello, world!” ini secara lebih rinci. Berikut adalah potongan pertama dari teka-teki tersebut:

fn main() {

}

Baris-baris ini mendefinisikan sebuah fungsi bernama main. Fungsi main itu
spesial: selalu menjadi kode pertama yang dijalankan dalam setiap program Rust
yang bisa dieksekusi. Di sini, baris pertama mendeklarasikan fungsi bernama
main yang tidak memiliki parameter dan tidak mengembalikan nilai apa pun.
Jika ada parameter, maka mereka akan ditulis di dalam tanda kurung ().

Badan fungsi dibungkus dengan {}. Rust mewajibkan penggunaan kurung kurawal
pada semua badan fungsi. Gaya penulisan yang baik adalah meletakkan kurung kurawal
pembuka pada baris yang sama dengan deklarasi fungsi, dengan memberi satu spasi
di antaranya.

Catatan: Jika kita ingin tetap menggunakan gaya standar di seluruh proyek Rust,
kita bisa memakai alat pemformat otomatis bernama rustfmt untuk memformat kode
sesuai gaya tertentu (lebih lanjut tentang rustfmt ada di Lampiran D).
Tim Rust sudah menyertakan alat ini dalam distribusi standar Rust, sama seperti rustc,
jadi seharusnya sudah terpasang di komputer kita!

Badan fungsi main berisi kode berikut:

#![allow(unused)]
fn main() {
println!("Hello, world!");
}

Baris ini melakukan seluruh pekerjaan dalam program kecil ini: mencetak teks ke layar. Ada tiga detail penting yang perlu kita perhatikan di sini.

Pertama, println! memanggil sebuah macro Rust. Jika yang dipanggil adalah fungsi biasa, maka penulisannya akan println (tanpa !). Macro Rust adalah cara untuk menulis kode yang menghasilkan kode lain untuk memperluas sintaks Rust, dan kita akan membahasnya lebih lanjut di Bab 20. Untuk saat ini, kita hanya perlu tahu bahwa penggunaan ! berarti kita sedang memanggil macro, bukan fungsi biasa, dan macro tidak selalu mengikuti aturan yang sama dengan fungsi.

Kedua, kita melihat string "Hello, world!". Kita meneruskan string ini sebagai argumen ke println!, dan string tersebut akan dicetak ke layar.

Ketiga, kita mengakhiri baris dengan tanda titik koma (;), yang menunjukkan bahwa ekspresi tersebut sudah selesai dan ekspresi berikutnya siap dimulai. Sebagian besar baris kode Rust diakhiri dengan titik koma.

Kompilasi dan Eksekusi adalah Langkah yang Terpisah

Kita baru saja menjalankan sebuah program baru, jadi mari kita periksa setiap langkah dalam prosesnya.

Sebelum menjalankan program Rust, kita harus mengompilasinya dengan compiler Rust dengan memasukkan perintah rustc dan menambahkan nama berkas sumber kita, seperti ini:

$ rustc main.rs

Jika kita memiliki latar belakang C atau C++, kita akan menyadari bahwa ini mirip dengan gcc atau clang. Setelah kompilasi berhasil, Rust menghasilkan sebuah biner yang bisa dieksekusi.

Di Linux, macOS, dan PowerShell di Windows, kita bisa melihat berkas executable dengan memasukkan perintah ls di shell:

$ ls
main  main.rs

Di Linux dan macOS, kita akan melihat dua berkas. Dengan PowerShell di Windows, kita akan melihat tiga berkas yang sama seperti yang muncul saat menggunakan CMD. Dengan CMD di Windows, kita akan memasukkan perintah berikut:

> dir /B %= the /B option says to only show the file names =%
main.exe
main.pdb
main.rs

Ini menampilkan berkas kode sumber dengan ekstensi .rs, berkas executable (main.exe di Windows, tetapi main di semua platform lain), dan, ketika menggunakan Windows, sebuah berkas yang berisi informasi debugging dengan ekstensi .pdb. Dari sini, kita bisa menjalankan berkas main atau main.exe, seperti ini:

$ ./main # or .\main on Windows

Jika main.rs kita adalah program “Hello, world!”, baris ini akan mencetak Hello, world! ke terminal kita.

Jika kita lebih familiar dengan bahasa dinamis seperti Ruby, Python, atau JavaScript, kita mungkin belum terbiasa dengan proses kompilasi dan eksekusi sebagai langkah terpisah. Rust adalah bahasa ahead-of-time compiled, artinya kita bisa mengompilasi program lalu memberikan file executable-nya kepada orang lain, dan mereka dapat menjalankannya tanpa harus memasang Rust. Sebaliknya, jika kita memberikan berkas .rb, .py, atau .js, orang tersebut perlu memasang Ruby, Python, atau JavaScript (sesuai bahasa yang digunakan). Namun, pada bahasa-bahasa tersebut, kita hanya perlu satu perintah untuk mengompilasi sekaligus menjalankan program. Semua ini adalah bentuk kompromi dalam desain bahasa pemrograman.

Mengompilasi dengan rustc saja sudah cukup untuk program sederhana, tetapi seiring pertumbuhan proyek, kita akan ingin mengatur semua opsi dan mempermudah berbagi kode. Selanjutnya, kita akan berkenalan dengan alat Cargo, yang akan membantu kita menulis program Rust untuk dunia nyata.