Study
Rust

Trait di Rust

Penjelasan

Trait di Rust setara dengan interface di bahasa lain — mendefinisikan kumpulan method yang WAJIB diimplementasikan oleh tipe data yang menerapkannya lewat impl NamaTrait for NamaTipe. Beda dari interface implisit Go, trait di Rust harus diimplementasikan secara eksplisit.

Contoh Konsep

trait Bentuk {
    fn hitung_luas(&self) -> f64;
}

struct Lingkaran {
    jari_jari: f64,
}

impl Bentuk for Lingkaran {
    fn hitung_luas(&self) -> f64 {
        3.14 * self.jari_jari * self.jari_jari
    }
}

fn main() {
    let lingkaranku = Lingkaran { jari_jari: 7.0 };
    println!("{}", lingkaranku.hitung_luas());
}

Praktikum

Buat trait Hewan dengan method bersuara(&self) -> String. Buat struct Kucing (tanpa field), implementasikan trait Hewan untuknya, method bersuara()-nya mengembalikan "Meong". Buat instance Kucing di main() dan tampilkan hasil bersuara().

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Trait bisa dipakai sebagai parameter fungsi (mis. fn tampilkan(b: &impl Bentuk)) supaya fungsi itu bisa menerima TIPE APA PUN yang mengimplementasikan trait tersebut — pola ini sering disebut "trait bound", dan jadi cara utama Rust mencapai polymorphism tanpa inheritance class.