Memanipulasi Array di Rust
Rust dikenal karena kinerja, keamanan, dan kontrol memori yang ketat, menjadikannya bahasa ideal untuk pemrograman tingkat sistem. Salah satu struktur data dasar di Rust adalah array, yaitu koleksi elemen dengan ukuran tetap yang dialokasikan di stack dan memiliki tipe yang sama. Panduan ini membahas manipulasi array di Rust, dari operasi dasar hingga teknik lanjutan.
Apa itu Array di Rust?
Array di Rust memiliki panjang tetap, artinya ukurannya tidak bisa berubah selama runtime. Semua elemen harus memiliki tipe yang sama. Array sangat berguna ketika koleksi data memiliki ukuran yang dapat diprediksi dan konstan.
Mendeklarasikan Array
fn main() {
let numbers = [1, 2, 3, 4, 5]; // Array integer
let zeros: [i32; 5] = [0; 5]; // Lima elemen nol
println!("{:?}", numbers);
println!("{:?}", zeros);
}
numbers
berisi elemen yang diinisialisasi langsung.zeros
berisi lima elemen0
dari tipei32
.
Mengakses dan Memperbarui Elemen
fn main() {
let mut fruits = ["apple", "banana", "cherry"];
println!("The first fruit is: {}", fruits[0]);
fruits[1] = "blueberry"; // Memperbarui elemen
println!("Updated array: {:?}", fruits);
}
Slicing Array
Slicing memberi akses ke sub-bagian array tanpa mengubah array asli:
fn main() {
let numbers = [10, 20, 30, 40, 50];
let slice = &numbers[1..4]; // indeks 1 sampai 3
println!("The slice is: {:?}", slice);
}
Operasi Array Umum
1. Menemukan Panjang
let arr = [1, 2, 3, 4];
println!("Length: {}", arr.len());
2. Iterasi
let languages = ["Rust", "Python", "Java"];
for language in languages.iter() {
println!("I love {}", language);
}
3. Membalik Array
let numbers = [1, 2, 3, 4, 5];
let reversed: Vec<_> = numbers.iter().rev().collect();
println!("Reversed: {:?}", reversed);
4. Mengurutkan Array
let mut numbers = [5, 3, 8, 1];
numbers.sort();
println!("Sorted: {:?}", numbers);
Array Multidimensi
Rust mendukung array multidimensi, cocok untuk grid atau matriks:
let matrix: [[i32; 3]; 2] = [
[1, 2, 3],
[4, 5, 6],
];
println!("Matrix: {:?}", matrix);
Menangani Akses di Luar Batas
Rust akan panic jika indeks berada di luar batas. Gunakan get()
untuk akses aman:
let arr = [1, 2, 3];
match arr.get(5) {
Some(&value) => println!("Value: {}", value),
None => println!("Index out of bounds!"),
}
Praktik Terbaik
- Gunakan array untuk koleksi berukuran tetap.
- Hindari pengkodean indeks langsung; gunakan loop atau iterator.
- Gunakan metode pengindeksan aman seperti
get()
. - Untuk operasi dinamis, konversi ke
Vec
menggunakanto_vec()
.
Kesimpulan
Array di Rust menawarkan efisiensi memori dan kinerja tinggi. Dengan menguasai manipulasi array, Anda dapat menulis kode yang lebih aman dan optimal. Latihan rutin pada operasi dasar dan lanjutan akan membuat Anda lebih mahir dalam bekerja dengan array di Rust.