Menu
CoddyTech

is_ok() dan is_err()

Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 44 dari 66.

Terkadang kamu perlu memeriksa dengan cepat apakah Result menunjukkan keberhasilan atau kegagalan tanpa mengambil nilai sebenarnya. Rust menyediakan dua method praktis untuk ini: .is_ok() dan .is_err().

Kedua method mengembalikan nilai boolean, sehingga cocok untuk pemeriksaan kondisi sederhana. Method .is_ok() mengembalikan true jika Result bernilai Ok, dan false jika nilainya Err. Method .is_err() bekerja sebaliknya:

let success: Result = Ok(42);
let failure: Result = Err("Something went wrong");

if success.is_ok() {
    println!("Operation succeeded!");
}

if failure.is_err() {
    println!("Operation failed!");
}

Method ini sangat berguna saat kamu hanya perlu mengetahui status hasilnya tanpa memedulikan nilai spesifik di dalamnya. Tidak seperti match, method ini tidak menghabiskan Result, jadi kamu masih bisa menggunakannya setelah itu.

challenge icon

Tantangan

Mudah

Kamu akan menerima dua input. Input pertama berupa angka (sebagai string), dan input kedua berupa indikator status (success atau failure). Buat Result<i32, &'static str> berdasarkan status. Jika statusnya success, buat Ok yang berisi angka yang sudah di-parse. Jika statusnya failure, buat Err dengan pesan "Operation failed". Gunakan .is_ok() dan .is_err() untuk memeriksa status hasil dan mencetak pesan yang sesuai.

Persyaratan:

  • Baca input pertama (angka) dan hapus spasi di awal dan akhir
  • Parse input pertama menjadi i32
  • Baca input kedua (status) dan hapus spasi di awal dan akhir
  • Buat variabel Result<i32, &'static str>:
    • Jika statusnya success, tetapkan Ok(parsed_number)
    • Jika statusnya failure, tetapkan Err("Operation failed")
  • Gunakan .is_ok() untuk memeriksa apakah hasilnya berhasil:
    • Jika benar, cetak: Success detected
  • Gunakan .is_err() untuk memeriksa apakah hasilnya berupa error:
    • Jika benar, cetak: Error detected

Input:

  • Baris pertama: Angka (misalnya, 42)
  • Baris kedua: success atau failure

Output:

  • Jika statusnya success: Success detected
  • Jika statusnya failure: Error detected

Coba sendiri

use std::io;

fn main() {
    // Baca input pertama (angka)
    let mut number_input = String::new();
    io::stdin().read_line(&mut number_input).expect("Failed to read line");
    let number_input = number_input.trim();
    
    // Ubah angka menjadi i32
    let parsed_number: i32 = number_input.parse().expect("Failed to parse number");
    
    // Baca input kedua (status)
    let mut status = String::new();
    io::stdin().read_line(&mut status).expect("Failed to read line");
    let status = status.trim();
    
    // TODO: Buat Result<i32, &'static str> berdasarkan status
    // Jika status bernilai "success", buat Ok(parsed_number)
    // Jika status bernilai "failure", buat Err("Operation failed")
    
    // TODO: Gunakan .is_ok() dan .is_err() untuk memeriksa hasilnya, lalu cetak pesan yang sesuai
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Rust online