Menggunakan Enums Pada Rust

Enum adalah type data custom. Berikut syntax untuk membuat enum:

enum NamaEnum {
  EnumVariants1,
  EnumVariants2,
  ...,
}

Contoh, kita akan membuat enum untuk posisi player hockey

enum HockeyPosition {
  Center,
  Wing,
  Defense,
  Goalie,
}

Berikut contoh penggunaan enum baik sebagai parameter pada function atau mengakses enum variants.

enum HockeyPosition{
 Center,
 Wing,
 Defense,
 Goalie,   
}

fn next_player(pos : HockeyPosition){
    //code goes here
}

fn main() {
    let pos = HockeyPosition::Defense;
    next_player(pos);

}

Setiap Enum Variants dapat menyimpan data tambahan, berikut contohnya

enum Clock {
  Sundial(u8),
  Digital(u8, u8),
  Analog(u8, u8, u8),
}

enum Clock diatas menyimpan tipe jam matahari yang hanya membutuhkan nilai jam, jam digitial yang dapat menyimpan jam dan menit, serta analog yang dapat menyimpan nilai jam, menit dan detik.

Berikut contoh menggunakan enum dalam block match

enum Clock {
 Sundial(u8),
 Digital(u8, u8),
 Analog(u8, u8, u8),   
}

fn tell_time(clock : Clock){
    match clock{
        Clock::Sundial(hours) =>
            println!("Jam {}", hours),
        Clock::Analog(hours, minutes, seconds) =>{
            println!("Jam {}, menit {}, detik {}", hours, minutes, seconds);
        },
        Clock::Digital(hours, minutes) =>
            println!("Jam {}, menit {}", hours, minutes),

    }
}


fn main() {
    tell_time(Clock::Sundial(4));
    tell_time(Clock::Digital(4, 4));
    tell_time(Clock::Analog(4, 4, 4));
}
Jam 4
Jam 4, menit 4
Jam 4, menit 4, detik 4

Enums diatas dapat kita tuliskan lebih jelas dengan mendefinisikan field. Perhatikan, karena kita menambahkan field pada enums, maka perlu digunakan curly brackets.

enum Clock {
    Sundial {hours:u8},
    Digital {hours:u8, minutes:u8},
    Analog {hours:u8, minutes:u8, seconds:u8},   
   }
   
   
   
fn main() {
    let clock = Clock::Analog {
        hours: 4,
        minutes: 4,
        seconds: 4,
    };
}
Sharing is caring:

Leave a Comment