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.
Tantangan
MudahKamu 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, tetapkanOk(parsed_number) - Jika statusnya
failure, tetapkanErr("Operation failed")
- Jika statusnya
- Gunakan
.is_ok()untuk memeriksa apakah hasilnya berhasil:- Jika benar, cetak:
Success detected
- Jika benar, cetak:
- Gunakan
.is_err()untuk memeriksa apakah hasilnya berupa error:- Jika benar, cetak:
Error detected
- Jika benar, cetak:
Input:
- Baris pertama: Angka (misalnya,
42) - Baris kedua:
successataufailure
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
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Alur Kontrol Lanjutan
Ekspresi 'match'Mencocokkan Beberapa NilaiMencocokkan RentangEkspresi 'if let'Perulangan sebagai EkspresiRangkuman, Parser Perintah Sederhana4Mengelompokkan Data dengan Struct
Apa Itu Struct?Ringkasan StructMengakses Field StructStruct yang Dapat DiubahStruct sebagai Parameter FungsiStruct TupleRangkuman: Buat Struct Buku7Menangani error dengan 'Result'
Apa itu 'Result'?Menggunakan 'match' dengan 'Result'is_ok() dan is_err()Cara singkat: unwrap dan expectOperator Tanda Tanya '?'Mengurai string menjadi angkaRangkuman: Fungsi Pembagian Aman2Pengantar Vektor
Apa Itu Vektor?Membuat VektorMenambahkan Elemen dengan pushMengakses Elemen VektorMelakukan Iterasi pada VektorIterasi MutableMenghapus ElemenRangkuman: Pelacak Skor Dasar5Pasangan Kunci-Nilai dengan Hash Map
Apa Itu Hash Map?Membuat Hash MapMenyisipkan Pasangan Kunci-NilaiMengakses NilaiMenelusuri Hash MapMemperbarui NilaiMenghapus PasanganRangkuman: Penghitung Kata8Proyek: Inventaris Barang Sederhana
Menyiapkan ProyekMenambahkan BarangMemeriksa StokMenjual BarangMenyatukan Semuanya3Daftar Tugas Baris Perintah
Penyiapan ProyekMenambahkan TugasMelihat Semua TugasMenghapus TugasKode AkhirLatihan sendiri: Compiler Rust online