Menu
CoddyTech

Cheat Sheet Rust

Terakhir diperbarui

Hello World & struktur

Program Rust dimulai di fn main; pernyataan diakhiri titik koma.

OperasiSintaks
Titik masuk programfn main() { ... }
Mencetak satu barisprintln!("Hello, World!");
Mencetak dengan nilaiprintln!("{} is {}", name, age);
Mencetak bentuk debugprintln!("{:?}", value);
Komentar baris// comment
Memakai item dari moduleuse std::collections::HashMap;
Build & jalankancargo run
Membuat binary releasecargo build --release

Variabel & tipe (let / mut)

Binding bersifat immutable secara default; tambahkan mut agar bisa diisi ulang.

OperasiSintaks
Binding immutablelet x = 5;
Binding mutablelet mut count = 0;
Tipe eksplisitlet age: u32 = 30;
Konstantaconst MAX: u32 = 100;
Shadowinglet x = x + 1;
Tipe bilangan bulati32, u32, i64, usize
Skalar lainnyaf64, bool, char
Tuplelet pair: (i32, &str) = (1, "a");
Konversi tipelet f = x as f64;

Alur kontrol

if adalah ekspresi, dan Rust punya tiga bentuk perulangan.

OperasiSintaks
If / elseif x > 0 { ... } else { ... }
If sebagai ekspresilet y = if x > 0 { 1 } else { -1 };
Perulangan tak terbatasloop { ... }
Loop yang mengembalikan nilailet v = loop { break 5; };
While loopwhile x < 100 { ... }
For pada rangefor i in 0..10 { ... }
For pada collectionfor item in &items { ... }
Break / continuebreak;, continue;

Fungsi

Ekspresi terakhir (tanpa titik koma) menjadi nilai kembalian.

OperasiSintaks
Fungsi dasarfn add(a: i32, b: i32) -> i32 { a + b }
Return eksplisitfn f() -> i32 { return 5; }
Tanpa nilai kembalianfn log(msg: &str) { ... }
Menerima referencefn len(s: &String) -> usize { s.len() }
Closurelet add = |a, b| a + b;
Closure dengan tipelet sq = |x: i32| -> i32 { x * x };
Fungsi sebagai argumenfn apply(f: impl Fn(i32) -> i32) { ... }

Ownership & borrowing

Setiap nilai punya satu pemilik; reference meminjamnya tanpa mengambil kepemilikan.

OperasiSintaks
Move (kepemilikan berpindah)let b = a; (a tidak lagi valid)
Clone (salinan dalam)let b = a.clone();
Borrow immutablelet r = &x;
Borrow mutablelet r = &mut x;
Borrow di dalam fungsifn read(s: &String) { ... }
Dereference*r
Aturan borrowingBanyak & 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.

OperasiSintaks
Mendefinisikan structstruct Point { x: i32, y: i32 }
Membuat instancelet p = Point { x: 1, y: 2 };
Mengakses fieldp.x
Tuple structstruct Pair(i32, i32);
Method (blok impl)impl Point { fn dist(&self) -> f64 { ... } }
Associated functionimpl Point { fn new() -> Self { ... } }
Mendefinisikan enumenum Shape { Circle(f64), Rect(f64, f64) }
Enum dengan field bernamaenum Msg { Move { x: i32, y: i32 } }
Derive trait#[derive(Debug, Clone)]

Pattern matching (match)

match membandingkan nilai dengan pola dan harus mencakup semua kemungkinan.

OperasiSintaks
Match pada nilaimatch x { 1 => "one", _ => "other" }
Match pada enummatch shape { Shape::Circle(r) => ... }
Match pada rangematch n { 1..=5 => ..., _ => ... }
Binding dengan guardmatch x { n if n > 0 => ... }
Match pada tuplematch point { (0, y) => ..., (x, _) => ... }
if let (satu pola)if let Some(v) = opt { ... }
while letwhile let Some(v) = stack.pop() { ... }
Destructuring structlet Point { x, y } = p;

Trait & generic

Trait mendefinisikan perilaku bersama; generic membuat kode berlaku untuk banyak tipe.

OperasiSintaks
Mendefinisikan traittrait Area { fn area(&self) -> f64; }
Mengimplementasikan traitimpl Area for Circle { fn area(&self) -> f64 { ... } }
Method defaulttrait Greet { fn hi(&self) { ... } }
Fungsi genericfn largest<T: PartialOrd>(list: &[T]) -> &T { ... }
Struct genericstruct Wrapper<T> { value: T }
Trait bound (where)fn f<T>(x: T) where T: Display { ... }
Argumen impl Traitfn print(item: impl Display) { ... }
Trait objectlet shapes: Vec<Box<dyn Area>> = ...;

Penanganan error (Result / Option)

Rust memodelkan ketiadaan nilai dengan Option dan error yang bisa dipulihkan dengan Result.

OperasiSintaks
Nilai opsionalOption<T>: Some(v) atau None
Tipe ResultResult<T, E>: Ok(v) atau Err(e)
Mengembalikan Resultfn read() -> Result<String, Error> { ... }
Meneruskan dengan ?let data = read()?;
Unwrap (panic jika None/Err)opt.unwrap()
Nilai defaultopt.unwrap_or(0)
Memetakan nilaiopt.map(|v| v + 1)
Menangani kedua cabangmatch res { Ok(v) => ..., Err(e) => ... }
Mengubah Option menjadi Resultopt.ok_or("missing")?

Collection umum (Vec / HashMap)

Vec adalah array yang bisa bertambah; HashMap adalah penyimpanan key-value.

OperasiSintaks
Membuat vectorlet mut v: Vec<i32> = Vec::new();
Literal vectorlet v = vec![1, 2, 3];
Push / popv.push(4);, v.pop();
Akses lewat indeksv[0]
Akses amanv.get(0) mengembalikan Option<&T>
Iterasifor x in &v { ... }
Panjangv.len()
Membuat maplet mut m: HashMap<String, i32> = HashMap::new();
Insert / getm.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?
Ownership adalah model memori Rust: setiap nilai punya tepat satu pemilik, dan nilai itu dibebaskan saat pemiliknya keluar dari scope. Borrowing membuatmu bisa mengakses nilai tanpa mengambil kepemilikannya dengan memakai reference: &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.

Ilustrasi bahasa pemrograman di Coddy

Belajar Rust bersama Coddy

Mulai