Cheat Sheet Rust
Terakhir diperbarui
Hello World & struktur
Program Rust dimulai di fn main; pernyataan diakhiri titik koma.
| Operasi | Sintaks |
|---|---|
| Titik masuk program | fn main() { ... } |
| Mencetak satu baris | println!("Hello, World!"); |
| Mencetak dengan nilai | println!("{} is {}", name, age); |
| Mencetak bentuk debug | println!("{:?}", value); |
| Komentar baris | // comment |
| Memakai item dari module | use std::collections::HashMap; |
| Build & jalankan | cargo run |
| Membuat binary release | cargo build --release |
Variabel & tipe (let / mut)
Binding bersifat immutable secara default; tambahkan mut agar bisa diisi ulang.
| Operasi | Sintaks |
|---|---|
| Binding immutable | let x = 5; |
| Binding mutable | let mut count = 0; |
| Tipe eksplisit | let age: u32 = 30; |
| Konstanta | const MAX: u32 = 100; |
| Shadowing | let x = x + 1; |
| Tipe bilangan bulat | i32, u32, i64, usize |
| Skalar lainnya | f64, bool, char |
| Tuple | let pair: (i32, &str) = (1, "a"); |
| Konversi tipe | let f = x as f64; |
Alur kontrol
if adalah ekspresi, dan Rust punya tiga bentuk perulangan.
| Operasi | Sintaks |
|---|---|
| If / else | if x > 0 { ... } else { ... } |
| If sebagai ekspresi | let y = if x > 0 { 1 } else { -1 }; |
| Perulangan tak terbatas | loop { ... } |
| Loop yang mengembalikan nilai | let v = loop { break 5; }; |
| While loop | while x < 100 { ... } |
| For pada range | for i in 0..10 { ... } |
| For pada collection | for item in &items { ... } |
| Break / continue | break;, continue; |
Fungsi
Ekspresi terakhir (tanpa titik koma) menjadi nilai kembalian.
| Operasi | Sintaks |
|---|---|
| Fungsi dasar | fn add(a: i32, b: i32) -> i32 { a + b } |
| Return eksplisit | fn f() -> i32 { return 5; } |
| Tanpa nilai kembalian | fn log(msg: &str) { ... } |
| Menerima reference | fn len(s: &String) -> usize { s.len() } |
| Closure | let add = |a, b| a + b; |
| Closure dengan tipe | let sq = |x: i32| -> i32 { x * x }; |
| Fungsi sebagai argumen | fn apply(f: impl Fn(i32) -> i32) { ... } |
Ownership & borrowing
Setiap nilai punya satu pemilik; reference meminjamnya tanpa mengambil kepemilikan.
| Operasi | Sintaks |
|---|---|
| Move (kepemilikan berpindah) | let b = a; (a tidak lagi valid) |
| Clone (salinan dalam) | let b = a.clone(); |
| Borrow immutable | let r = &x; |
| Borrow mutable | let r = &mut x; |
| Borrow di dalam fungsi | fn read(s: &String) { ... } |
| Dereference | *r |
| Aturan borrowing | Banyak & ATAU satu &mut dalam satu waktu, tidak boleh keduanya |
| Slice (meminjam sebuah rentang) | let part = &arr[1..3]; |
Struct & enum
Struct mengelompokkan data yang saling terkait; enum memodelkan nilai yang berupa salah satu dari beberapa varian.
| Operasi | Sintaks |
|---|---|
| Mendefinisikan struct | struct Point { x: i32, y: i32 } |
| Membuat instance | let p = Point { x: 1, y: 2 }; |
| Mengakses field | p.x |
| Tuple struct | struct Pair(i32, i32); |
| Method (blok impl) | impl Point { fn dist(&self) -> f64 { ... } } |
| Associated function | impl Point { fn new() -> Self { ... } } |
| Mendefinisikan enum | enum Shape { Circle(f64), Rect(f64, f64) } |
| Enum dengan field bernama | enum Msg { Move { x: i32, y: i32 } } |
| Derive trait | #[derive(Debug, Clone)] |
Pattern matching (match)
match membandingkan nilai dengan pola dan harus mencakup semua kemungkinan.
| Operasi | Sintaks |
|---|---|
| Match pada nilai | match x { 1 => "one", _ => "other" } |
| Match pada enum | match shape { Shape::Circle(r) => ... } |
| Match pada range | match n { 1..=5 => ..., _ => ... } |
| Binding dengan guard | match x { n if n > 0 => ... } |
| Match pada tuple | match point { (0, y) => ..., (x, _) => ... } |
| if let (satu pola) | if let Some(v) = opt { ... } |
| while let | while let Some(v) = stack.pop() { ... } |
| Destructuring struct | let Point { x, y } = p; |
Trait & generic
Trait mendefinisikan perilaku bersama; generic membuat kode berlaku untuk banyak tipe.
| Operasi | Sintaks |
|---|---|
| Mendefinisikan trait | trait Area { fn area(&self) -> f64; } |
| Mengimplementasikan trait | impl Area for Circle { fn area(&self) -> f64 { ... } } |
| Method default | trait Greet { fn hi(&self) { ... } } |
| Fungsi generic | fn largest<T: PartialOrd>(list: &[T]) -> &T { ... } |
| Struct generic | struct Wrapper<T> { value: T } |
| Trait bound (where) | fn f<T>(x: T) where T: Display { ... } |
| Argumen impl Trait | fn print(item: impl Display) { ... } |
| Trait object | let shapes: Vec<Box<dyn Area>> = ...; |
Penanganan error (Result / Option)
Rust memodelkan ketiadaan nilai dengan Option dan error yang bisa dipulihkan dengan Result.
| Operasi | Sintaks |
|---|---|
| Nilai opsional | Option<T>: Some(v) atau None |
| Tipe Result | Result<T, E>: Ok(v) atau Err(e) |
| Mengembalikan Result | fn read() -> Result<String, Error> { ... } |
| Meneruskan dengan ? | let data = read()?; |
| Unwrap (panic jika None/Err) | opt.unwrap() |
| Nilai default | opt.unwrap_or(0) |
| Memetakan nilai | opt.map(|v| v + 1) |
| Menangani kedua cabang | match res { Ok(v) => ..., Err(e) => ... } |
| Mengubah Option menjadi Result | opt.ok_or("missing")? |
Collection umum (Vec / HashMap)
Vec adalah array yang bisa bertambah; HashMap adalah penyimpanan key-value.
| Operasi | Sintaks |
|---|---|
| Membuat vector | let mut v: Vec<i32> = Vec::new(); |
| Literal vector | let v = vec![1, 2, 3]; |
| Push / pop | v.push(4);, v.pop(); |
| Akses lewat indeks | v[0] |
| Akses aman | v.get(0) mengembalikan Option<&T> |
| Iterasi | for x in &v { ... } |
| Panjang | v.len() |
| Membuat map | let mut m: HashMap<String, i32> = HashMap::new(); |
| Insert / get | m.insert(k, v);, m.get(&k) |
| Entry API | *m.entry(k).or_insert(0) += 1; |
Sintaks Rust yang paling sering kamu pakai, dalam satu halaman. Cheat sheet Rust ini adalah referensi cepat untuk inti bahasanya: variabel dan mutabilitas, ownership dan borrowing, struct dan enum, pattern matching, trait dan generic, serta tipe Result dan Option di balik penanganan error di Rust.
Semua yang ada di sini adalah Rust standar yang bisa kamu compile dengan toolchain stable terbaru. Salin yang kamu butuhkan, atau coba setiap potongan kode langsung di playground Rust, tanpa perlu menginstal cargo.
FAQ cheat sheet Rust
Apakah cheat sheet Rust ini gratis?
Ya. Cheat sheet Rust ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari pola match, trait bound, atau method collection.
Apa itu ownership dan borrowing di Rust?
&x untuk borrow immutable atau &mut x untuk borrow mutable. Compiler menegakkan satu aturan: dalam satu waktu kamu boleh punya banyak borrow immutable atau tepat satu borrow mutable, sehingga data race tercegah saat compile.Apa perbedaan Result dan Option di Rust?
Option<T> mewakili nilai yang mungkin tidak ada: isinya Some(v) atau None, dan kamu memakainya saat tidak ada error yang perlu dilaporkan, hanya nilai yang hilang. Result<T, E> mewakili operasi yang bisa gagal: isinya Ok(v) atau Err(e), dengan membawa nilai error saat terjadi masalah. Pakai Option untuk "mungkin ada" dan Result untuk "ini bisa gagal"; operator ? meneruskan keduanya.Bisakah saya berlatih Rust secara online?
Bisa. Buka playground Rust untuk compile dan menjalankan potongan kode apa pun dari cheat sheet ini di browsermu, tanpa perlu menginstal cargo atau toolchain. Kalau kamu ingin belajar terarah, kursus Rust interaktif gratis dari Coddy membawamu dari variabel dan ownership sampai trait dan penanganan error, langkah demi langkah.
Apakah cheat sheet ini cocok untuk pemula?
Cocok. Isinya disusun mulai dari topik yang paling umum (variabel, alur kontrol, fungsi) sampai yang lanjutan (trait, generic, penanganan error), jadi kamu bisa memakai bagian atas sejak hari pertama dan pelan-pelan menguasai ownership dan sisanya.