DEV Community

Abdul Ghofur
Abdul Ghofur

Posted on

2 1

Rust - Control Flow (Condition)

Seperti namanya, fungsinya adalah mengatur arus/jalan dari program kita.
Apakah kita harus belok kanan, ataukah kiri,
ataukah putar balik,
itulah bahasa sederhana dari Control Flow

Semua materi merupakan rangkuman belajar.

Untuk bacaan yang lebih langkap & update, dipersilahkan akses pada
The Book

Adapun control flow di Rust meliputi

  • condition
    • if & else
    • match
  • iteration/repetition
    • loop
    • while
    • for in
  • control flow keyword
    • break
    • continue
    • juga support control flow label dengan 'label:

if & else

fn main() {
    let umur = 21;

    if umur < 18 {
        println!("kemudaan");
    } else if umur > 60 {
        println!("kayaknya waktunya pensiun");
    } else {
        println!("boleh lah");
    }

    // Karena if else 
    // merupakan expression 
    // ( dapat mengembalikan nilai )
    // kita dapat menggunakannya ke dalam variable
    let umur = if umur < 18 {
        "kemudaan"
    } else if umur > 60 {
        "kayaknya waktunya pensiun"
    } else {
        "boleh lah"
    };
    // pada contoh di atas 
    // kita menggunakan 
    // shadowing pada variable umur
    // & expression untuk mengembalikan nilai

    println!("{}", umur);
}
Enter fullscreen mode Exit fullscreen mode
  • Kita tidak perlu menuliskan kurung sebagai bungkus dari kondisi
  • Body kondisi dibungkus dengan kurung kurawal { }
  • Karena merupakan expression, kita dapat menggunakannya ke dalam variable.
  • Kita juga dapat menggunakan expression sebagai return di dalam body kondisinya
  • Bila menggunakannya sebagai expression, pastikan nilai return bertipe data sama.
  • if & else hanya menerima nilai boolean ke dalam kondisinya, tidak seperti JavaScrip yang dapat menerima nilai truly/falsy

match

Pada Dasarnya match seperti switch pada beberapa bahasa pemrograman lain.
Nah, bedanya di Rust kita harus menangani segala kemungkinan yang terjadi.

fn main() {
    let nilai = 90;

    match nilai {
        0 => println!("Wah ini sih parah"),
        1 | 2 | 3 => println!("Niat ngga sih?"),
        4..=35 => println!("F"),
        31..=50 => {
            println!("Hmmm");
            println!("E");
        },
        51..=65 => println!("D"),
        66..=75 => println!("C"),
        76..=85 => println!("B"),
        86..=98 => println!("A"),
        99..=100 => println!("A+"),
        _ => println!("???"),
    }

    let boolean = true;

    let boolean = match boolean {
        false => 0,
        true => 1,
    };

    println!("{}", boolean);

}
Enter fullscreen mode Exit fullscreen mode
  • Nilai yang akan diperiksa, tidak perlu tanda kurung
  • Kurung kurawa sebagai body pengecekan & kondisi (apabila lebih dari 1 baris).
  • => dan , sebagai batas tiap kondisi
  • _ digunakan sebagai else atau default, kemungkinan yang lain akan masuk ke dalam kondisi ini
  • Kita juga dapat menggunakannya sebagai expression.

    pastikan nilai return bertipe data sama

Untuk control flow yang lain akan dibahas secara terpisah.

Terima kasih.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up