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 statementuseasync: mengembalikan sebuahFutureketimbang memblokir thread saat iniawait: menahan eksekusi sampai hasil dari sebuahFuturesudah siapbreak: keluar dari sebuah perulangan (loop) secara langsungconst: mendefinisikan item konstanta atau raw pointers konstantacontinue: lanjut ke iterasi perulangan berikutnyacrate: di dalam module path, ini merujuk ke akar crate (crate root)dyn: penyaluran dinamis (dynamic dispatch) ke sebuah trait objectelse: jalan alternatif (fallback) untuk struktur control flowifdanif letenum: mendefinisikan sebuah enumerasiextern: menautkan (link) sebuah fungsi atau variabel eksternalfalse: nilai literal salah (false) pada Booleanfn: mendefinisikan sebuah fungsi atau tipe dari function pointerfor: perulangan (loop) melewati item-item dari sebuah iterator, mengimplementasikan sebuah trait, atau menentukan higher-ranked lifetimeif: percabangan berdasarkan hasil dari ekspresi kondisionalimpl: mengimplementasikan fungsionalitas bawaan (inherent) atau fungsionalitas traitin: bagian dari sintaks perulanganforlet: mengikat (bind) sebuah variabelloop: perulangan (loop) tanpa syaratmatch: mencocokkan sebuah nilai terhadap patterns (pola-pola)mod: mendefinisikan sebuah modulmove: membuat closure mengambil alih kepemilikan (ownership) atas semua nilai yang ditangkapnya (captures)mut: menandakan mutabilitas pada referensi, raw pointers, atau pattern bindingspub: menandakan visibilitas publik pada field struct, blokimpl, atau modulref: mengikat berdasarkan referensireturn: mengembalikan nilai dari fungsiSelf: type alias untuk tipe yang sedang kita definisikan atau implementasikanself: subjek dari method atau modul saat inistatic: variabel global atau lifetime yang berlangsung selama keseluruhan eksekusi programstruct: mendefinisikan sebuah struktursuper: modul induk (parent module) dari modul saat initrait: mendefinisikan sebuah traittrue: nilai literal benar (true) pada Booleantype: mendefinisikan type alias atau associated typeunion: mendefinisikan union; hanya menjadi keyword saat dipakai di dalam deklarasi unionunsafe: menandakan kode, fungsi, trait, atau implementasi yang tidak amanuse: membawa symbols ke dalam scope; menentukan tangkapan pasti (precise captures) untuk batasan generic dan lifetimewhere: menandakan klausa yang membatasi (constrain) sebuah tipewhile: 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:
abstractbecomeboxdofinalgenmacrooverrideprivtrytypeofunsizedvirtualyield
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.