Skip to content

Latest commit

 

History

History
90 lines (64 loc) · 1.47 KB

File metadata and controls

90 lines (64 loc) · 1.47 KB

Collections dan Error Handling

String

String adalah teks yang bisa berubah.

let mut pesan = String::from("Halo");
pesan.push_str(" Rust");

Vec

Vec<T> adalah array dinamis.

let mut angka = Vec::new();
angka.push(10);
angka.push(20);

Iterasi:

for item in &angka {
    println!("{}", item);
}

HashMap

Untuk pasangan key-value, gunakan HashMap.

use std::collections::HashMap;

let mut nilai = HashMap::new();
nilai.insert("Andi", 90);
nilai.insert("Budi", 85);

Error handling dengan Result

Rust mendorong error ditangani secara eksplisit.

fn bagi(a: f64, b: f64) -> Result<f64, String> {
    if b == 0.0 {
        Err(String::from("tidak bisa membagi dengan nol"))
    } else {
        Ok(a / b)
    }
}

Pemakaian:

match bagi(10.0, 2.0) {
    Ok(hasil) => println!("Hasil: {}", hasil),
    Err(pesan) => println!("Error: {}", pesan),
}

if let dan while let

Untuk pola sederhana, if let lebih ringkas.

let skor = Some(100);

if let Some(nilai) = skor {
    println!("Nilai: {}", nilai);
}

Exercise

  1. Buat Vec<String> berisi tiga nama teman.
  2. Tambahkan elemen baru lalu cetak semua elemen.
  3. Buat HashMap untuk menyimpan nama siswa dan nilai.
  4. Buat fungsi bagi yang mengembalikan Result.

Challenge

Modifikasi program Vec sehingga:

  • elemen di-pop satu per satu
  • setiap hasil pop ditangani dengan match
  • tampilkan pesan berbeda jika vector sudah kosong