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

Lampiran A: Kata Kunci (Keywords)

Daftar berikut ini berisi keywords (kata kunci) yang direservasi buat penggunaan saat ini maupun penggunaan di masa depan oleh bahasa Rust. Oleh karena itu, kata-kata ini tidak bisa dipakai sebagai identifiers (pengidentifikasi) (terkecuali dipakai sebagai raw identifiers, seperti yang bakal kita obrolin di bagian “Raw Identifiers”). Identifiers adalah nama-nama fungsi, variabel, parameter, field struct, modul, crates, konstanta, macros, nilai statis, atribut, tipe, traits, atau lifetimes.

Keywords yang Saat Ini Dipakai

Berikut adalah daftar keywords yang saat ini sedang dipakai, beserta penjelasan fungsionalitasnya.

  • as: melakukan casting (pengubahan tipe) primitif, menghilangkan ambiguitas trait spesifik yang menampung sebuah item, atau mengganti nama item di dalam statement use
  • async: mengembalikan sebuah Future ketimbang memblokir thread saat ini
  • await: menahan eksekusi sampai hasil dari sebuah Future sudah siap
  • break: keluar dari sebuah perulangan (loop) secara langsung
  • const: mendefinisikan item konstanta atau raw pointers konstanta
  • continue: lanjut ke iterasi perulangan berikutnya
  • crate: di dalam module path, ini merujuk ke akar crate (crate root)
  • dyn: penyaluran dinamis (dynamic dispatch) ke sebuah trait object
  • else: jalan alternatif (fallback) untuk struktur control flow if dan if let
  • enum: mendefinisikan sebuah enumerasi
  • extern: menautkan (link) sebuah fungsi atau variabel eksternal
  • false: nilai literal salah (false) pada Boolean
  • fn: mendefinisikan sebuah fungsi atau tipe dari function pointer
  • for: perulangan (loop) melewati item-item dari sebuah iterator, mengimplementasikan sebuah trait, atau menentukan higher-ranked lifetime
  • if: percabangan berdasarkan hasil dari ekspresi kondisional
  • impl: mengimplementasikan fungsionalitas bawaan (inherent) atau fungsionalitas trait
  • in: bagian dari sintaks perulangan for
  • let: mengikat (bind) sebuah variabel
  • loop: perulangan (loop) tanpa syarat
  • match: mencocokkan sebuah nilai terhadap patterns (pola-pola)
  • mod: mendefinisikan sebuah modul
  • move: membuat closure mengambil alih kepemilikan (ownership) atas semua nilai yang ditangkapnya (captures)
  • mut: menandakan mutabilitas pada referensi, raw pointers, atau pattern bindings
  • pub: menandakan visibilitas publik pada field struct, blok impl, atau modul
  • ref: mengikat berdasarkan referensi
  • return: mengembalikan nilai dari fungsi
  • Self: type alias untuk tipe yang sedang kita definisikan atau implementasikan
  • self: subjek dari method atau modul saat ini
  • static: variabel global atau lifetime yang berlangsung selama keseluruhan eksekusi program
  • struct: mendefinisikan sebuah struktur
  • super: modul induk (parent module) dari modul saat ini
  • trait: mendefinisikan sebuah trait
  • true: nilai literal benar (true) pada Boolean
  • type: mendefinisikan type alias atau associated type
  • union: mendefinisikan union; hanya menjadi keyword saat dipakai di dalam deklarasi union
  • unsafe: menandakan kode, fungsi, trait, atau implementasi yang tidak aman
  • use: membawa symbols ke dalam scope; menentukan tangkapan pasti (precise captures) untuk batasan generic dan lifetime
  • where: menandakan klausa yang membatasi (constrain) sebuah tipe
  • while: perulangan bersyarat berdasarkan hasil dari sebuah ekspresi

Keywords yang Direservasi buat Penggunaan di Masa Depan

Keywords berikut ini belum punya fungsionalitas apa pun, tapi sudah direservasi oleh Rust buat potensi pemakaian di masa depan:

  • abstract
  • become
  • box
  • do
  • final
  • gen
  • macro
  • override
  • priv
  • try
  • typeof
  • unsized
  • virtual
  • yield

Raw Identifiers

Raw identifiers adalah sintaks yang memungkinkan kita memakai keywords di tempat-tempat di mana mereka biasanya tidak diperbolehkan. Kita bisa memakai raw identifier dengan menambahkan awalan r# pada sebuah keyword.

Misalnya, match itu adalah sebuah keyword. Kalau kita mencoba men-compile fungsi berikut yang memakai match sebagai namanya:

Nama File: src/main.rs

fn match(needle: &str, haystack: &str) -> bool {
    haystack.contains(needle)
}

kita bakal mendapat error ini:

error: expected identifier, found keyword `match`
 --> src/main.rs:4:4
  |
4 | fn match(needle: &str, haystack: &str) -> bool {
  |    ^^^^^ expected identifier, found keyword

Error tersebut menunjukkan kalau kita tidak bisa memakai keyword match sebagai identifikasi fungsi. Supaya bisa memakai match sebagai nama fungsi, kita perlu memakai sintaks raw identifier, kayak gini:

Nama File: src/main.rs

fn r#match(needle: &str, haystack: &str) -> bool {
    haystack.contains(needle)
}

fn main() {
    assert!(r#match("foo", "foobar"));
}

Kode ini bakal berhasil di-compile tanpa error. Perhatikan awalan r# pada nama fungsi di bagian definisinya sekaligus di tempat fungsi tersebut dipanggil di dalam main.

Raw identifiers membiarkan kita memakai kata apa pun sebagai identifier, bahkan jika kata tersebut kebetulan adalah keyword yang direservasi. Hal ini ngasih kita kebebasan lebih dalam memilih nama identifier, sekaligus memungkinkan kita berintegrasi dengan program yang ditulis di bahasa lain di mana kata-kata tersebut bukanlah keywords. Selain itu, raw identifiers juga memungkinkan kita memakai libraries yang ditulis dalam edisi (edition) Rust yang berbeda dari yang dipakai oleh crate kita. Misalnya, try bukanlah keyword di edisi 2015, tapi dia menjadi keyword di edisi 2018, 2021, dan 2024. Kalau kita bergantung pada sebuah library yang ditulis pakai edisi 2015 dan punya fungsi try, kita harus memakai sintaks raw identifier, yaitu r#try di kasus ini, buat memanggil fungsi tersebut dari kode kita di edisi-edisi yang lebih baru. Lihat Lampiran E untuk informasi lebih lanjut tentang editions.