Structs
See this chapter on YouTube: Part 1 and Part 2
Dengan struct, Anda bisa membuat type Anda sendiri. Di Rust, Anda akan menggunakan struct sepanjang waktu karena ia mudah untuk digunakan. Struct dibuat dengan keyword struct
. Nama dari sebuah struct harus berformat UpperCamelCase (Huruf Capital untuk setiap huruf di awal kata, tanpa spasi). Jika Anda menulis sebuah struct dengan format lowercase, compiler akan memberi tahu Anda.
Ada 3 jenis structs. Yang pertama adalah "unit struct". Unit artinya "tidak memiliki apapun". Untuk unit struct, Anda cukuk menuliskan nama dan semicolon.
struct FileDirectory; fn main() {}
Selanjutnya ada tuple struct, atau biasa disebut unnamed struct. Disebut "unnamed" karena Anda hanya perlu menuliskan type, tanpa ada nama fieldnya. Tuple struct sangat cocok untuk digunkan apabila Anda membutuhkan sebuah struct sederhana dan tidak perlu untuk mengingat namanya.
struct Colour(u8, u8, u8); fn main() { let my_colour = Colour(50, 0, 50); // membuat warna RGB (red, green, blue) println!("The second part of the colour is: {}", my_colour.1); }
Hasilnya adalah The second part of the colour is: 0
.
Jenis ketiga adalah named struct. Mungkin ini adalah jenis struct yang biasanya paling sering digunakan. Pada struct jenis ini, Anda perlu mendeklarasikan nama field dan juga typenya di dalam {}
code block. Sebagai catatan, bahwa Anda tidak perlu menuliskan semicolon setelah named struct, karena ada code block yang ditulis setelahnya.
struct Colour(u8, u8, u8); // Deklarasikan Colour tuple struct struct SizeAndColour { size: u32, colour: Colour, // Dan kita masukkan ke dalam named struct } fn main() { let my_colour = Colour(50, 0, 50); let size_and_colour = SizeAndColour { size: 150, colour: my_colour }; }
Anda harus memisahkan field dengan menggunakan koma dan begitu juga pada named struct. Untuk field yang terakhir, Anda boleh menambahkan koma atau tidak - itu terserah Anda. SizeAndColour
memiliki koma setelah colour
:
struct Colour(u8, u8, u8); // Deklarasikan Colour tuple struct struct SizeAndColour { size: u32, colour: Colour, // Dan kita masukkan ke dalam named struct } fn main() {}
Sebenarnya Anda tidak memerlukan koma tersebut. Namun adalah ide yang bagus untuk selalu memberikan koma pada bagian akhir field, karena terkadang Anda akan mengubah urutan dari field-field tersebut:
struct Colour(u8, u8, u8); // Deklarasikan Colour tuple struct struct SizeAndColour { size: u32, colour: Colour // Tidak ada koma disini } fn main() {}
Kemudian kita memutuskan untuk mengubah urutannya...
struct SizeAndColour { colour: Colour // ⚠️ Oops! Sekarang bagian ini tidak berkoma. Dan ini akan memberikan error jika dijalankan. size: u32, } fn main() {}
Tapi itu tidak terlalu penting sehingga Anda dapat memilih apakah akan menggunakan koma atau tidak.
Okay. Mari kita buat struct Country
sebagai contoh. Struct Country
memiliki field population
, capital
, dan leader_name
.
struct Country { population: u32, capital: String, leader_name: String } fn main() { let population = 500_000; let capital = String::from("Elista"); let leader_name = String::from("Batu Khasikov"); let kalmykia = Country { population: population, capital: capital, leader_name: leader_name, }; }
Apakah Anda menyadari bahwa kita menuliskan sesuatu yang sama 2 kali? Kita menulis population: population
, capital: capital
, dan leader_name: leader_name
. Sebenarnya, Anda tidak perlu melakukan hal seperti itu. Jika nama field dan nama variablenya sama, maka Anda tidak perlu menuliskannya 2 kali.
struct Country { population: u32, capital: String, leader_name: String } fn main() { let population = 500_000; let capital = String::from("Elista"); let leader_name = String::from("Batu Khasikov"); let kalmykia = Country { population, capital, leader_name, }; }