Halo teman-teman semuanya, pada artikel sebelumnya kita sudah membahas tentang error handling di Rust. Kita belajar bagaimana Rust menangani error yang fatal dengan panic!
, serta error yang masih bisa ditangani menggunakan Result
. Kita juga mengenal cara praktis memakai unwrap
, expect
, dan operator ?
agar kode lebih ringkas.
Sekarang kita akan melanjutkan ke salah satu topik yang sangat sering digunakan dalam pemrograman sehari-hari, yaitu collection di Rust. Collection adalah tipe data yang digunakan untuk menyimpan banyak nilai sekaligus. Berbeda dengan array atau tuple yang ukurannya tetap, collection di Rust bersifat fleksibel dan bisa berubah ukurannya saat program berjalan.
Rust menyediakan beberapa collection standar di dalam library-nya, tetapi tiga yang paling umum digunakan adalah:
- Vector (
Vec<T>
) – menyimpan daftar nilai berurutan.
- HashMap (
HashMap<K, V>
) – menyimpan pasangan key-value.
- HashSet (
HashSet<T>
) – menyimpan nilai unik tanpa duplikasi.
Mari kita bahas satu per satu.
Vector
Vector
adalah collection paling sering digunakan di Rust. Tipe ini mirip dengan array dinamis yang bisa menampung banyak elemen dengan tipe yang sama.
fn main() {
let mut angka: Vec<i32> = Vec::new();
angka.push(10);
angka.push(20);
angka.push(30);
println!("Isi vector: {:?}", angka);
// akses elemen
println!("Elemen pertama: {}", angka[0]);
// iterasi
for n in &angka {
println!("Angka: {}", n);
}
}
Vector bisa dibuat dengan macro vec!
agar lebih singkat:
fn main() {
let angka = vec![1, 2, 3, 4, 5];
println!("{:?}", angka);
}
HashMap
HashMap
adalah collection untuk menyimpan data dalam bentuk pasangan key-value. Key harus unik, sedangkan value bisa apa saja.
use std::collections::HashMap;
fn main() {
let mut skor = HashMap::new();
skor.insert(String::from("Andi"), 90);
skor.insert(String::from("Budi"), 85);
println!("{:?}", skor);
// akses nilai dengan key
if let Some(nilai) = skor.get("Andi") {
println!("Nilai Andi: {}", nilai);
}
// iterasi
for (nama, nilai) in &skor {
println!("{} mendapat {}", nama, nilai);
}
}
Jika kita menambahkan key yang sama, value lama akan ditimpa dengan value baru.
HashSet
HashSet
adalah collection yang hanya menyimpan nilai unik. Jika kita mencoba menambahkan nilai yang sama, maka nilai duplikat tidak akan masuk.
use std::collections::HashSet;
fn main() {
let mut buah = HashSet::new();
buah.insert("apel");
buah.insert("jeruk");
buah.insert("apel"); // duplikat, tidak akan masuk lagi
println!("{:?}", buah);
// cek keberadaan
if buah.contains("jeruk") {
println!("Jeruk tersedia!");
}
}
HashSet sangat berguna ketika kita ingin memastikan tidak ada duplikasi data.
Kesimpulan
Pada artikel ini kita sudah mempelajari tiga collection utama di Rust: Vector, HashMap, dan HashSet. Vector digunakan untuk daftar berurutan, HashMap untuk pasangan key-value, dan HashSet untuk menyimpan nilai unik.
Pada artikel berikutnya, kita akan membahas tentang Iterator di Rust, yaitu cara yang lebih elegan dan efisien untuk melakukan operasi pada collection.
Terima Kasih