Struct di Rust
Struct adalah cara untuk mengelompokkan data terkait menjadi satu tipe custom — mirip class di bahasa lain, tapi tanpa inheritance.
Mendefinisikan Struct
struct User {
nama: String,
email: String,
umur: u32,
aktif: bool,
}
fn main() {
let user1 = User {
nama: String::from("Budi"),
email: String::from("[email protected]"),
umur: 25,
aktif: true,
};
println!("Nama: {}", user1.nama);
}
impl Block — Menambah Method
struct Persegi {
sisi: f64,
}
impl Persegi {
// Constructor (convention: fn new)
fn new(sisi: f64) -> Persegi {
Persegi { sisi }
}
// Method (menggunakan &self)
fn luas(&self) -> f64 {
self.sisi * self.sisi
}
fn keliling(&self) -> f64 {
4.0 * self.sisi
}
}
fn main() {
let kotak = Persegi::new(5.0);
println!("Luas: {}", kotak.luas()); // 25
println!("Keliling: {}", kotak.keliling()); // 20
}
Struct Update Syntax
let user2 = User {
email: String::from("[email protected]"),
..user1 // ambil sisa field dari user1
};
Tuple Struct
struct Color(u8, u8, u8);
struct Point(f64, f64);
let merah = Color(255, 0, 0);
let titik = Point(3.0, 4.0);
println!("R: {}", merah.0);
Display dengan #[derive]
#[derive(Debug)]
struct User {
nama: String,
umur: u32,
}
let u = User { nama: String::from("Budi"), umur: 25 };
println!("{:?}", u); // User { nama: "Budi", umur: 25 }