Data Types
Data Types
Setiap nilai di Rust memiliki tipe data tertentu, Rust punya dua subset tipe data yaitu scalar dan compound.
Scalar
Scalar merepresentasikan nilai tunggal, ada empat tipe data scalar yaitu integer, floating-point, numeric operations, booleans, dan char.
Integer
Tipe data integer dibagi menjadi dua yaitu signed dan unsigned. Signed integer diidentifikasi dengan keyword i
dan unsigned integer ditandai dengan u
. berikut adalah tabelnya.
Length | Signed | Unsigned |
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
Perbedaan Signed dan Unsigned, Signed dapat menyimpan number yang positif dan negatif, Unsigned hanya menyimpan nilai yang positif.
Floating Point
Rust punya tipe data primitif yaitu floating point numbers, tipe data ini ditandai dengan f32
dan f64
yang mana adalah 32 bit
dan 64 bit
.
fn main() {let x = 2.0; // f64 defaultlet c: f32 = 3.2; // f32}
Numeric Operations
Rust juga mendukung operasi matematika, misalnya untuk operasi penjumlahan, pembagian, dan pengurangan.
fn main() {// additionlet addition = 5 + 10;// subtractionlet subtraction = 95.5 - 4.3;// multiplicationlet multiplication = 4 * 30;// divisionlet division = 56.7 / 32.2;// modulolet modulo = 43 % 5;}
Booleans
Mirip seperti tipe data pada umumnya, tipe data ini yaitu boolean memiliki dua nilai yaitu true
dan false
.
Char
Char adalah salah satu tipe data primitif yang tersedia di Rust. Tipe data ini merepresentasikan ASCII (Accented letters).
let name = "Adiatma";
Compound
Tipe data compound dapat mengoleksi atau mengumpulkan nilai-nilai ke dalam satu tipe data, ada dua tipe data compound primitif yang diketahui oleh Rust yaitu tuples dan array.
Tuple
Tuple adalah cara untuk mengelompokkan tipe data tertentu ke dalam satu bentuk kelompok seperti dibawah ini.
let tup: (i32, f32, u8) = (500, 6.4, 1);
Seperti contoh di atas, setiap posisi pada tuple memiliki tipe data yang beragam. Artinya, setiap nilai di dalam tuple tidak harus sama. Untuk mengakses nilai tertentu di dalam sebuah tuple, dapat dilakukan dengan cara berikut:
fn main() {let tup: (i32, f32, u8) = (500, 6.4, 1);let (a, b, c) = tup;println!("Nilai b yaitu {}", b);}
Selain cara di atas, mengakses nilai di dalam tuple dapat dilakukan secara langsung dengan tanda .
seperti berikut ini:
fn main() {let tup: (i32, f32, u8) = (500, 6.4, 1);let second = tup.1;println!("Nilai b yaitu {}", second);}
Tuple memiliki ukuran tetap dan tidak dapat berubah dan hanya dideklarasi sekali saja.
Array
Array adalah tipe data koleksi namun berbeda dengan tuple, array di Rust sedikit berbeda dengan array pada bahasa program umumnya, tipe data array di Rust punya ukuran yang absolute atau pasti, contohnya seperti dibawah.
let numbers: [i32; 2] = [1, 2];
Cara mengakses nilai pada suatu array dapat dilakukan dengan cara berikut:
let numbers = [1, 2, 3, 4, 5];let second = numbers[1];println!("Nilai kedua yaitu {}", second);
Penggunaan array sangat bermanfaat jika kita ingin menggunakan alokasi data di stack memori. Sama seperti tuple, tipe data array memiliki ukuran tetap, namun array tidak dapat menyimpan lebih dari 1 tipe data.
Function
Untuk membuat sebuah function baru cukup diawali dengan keyword fn
yang kemudian depannya nama function contohnya seperti dibawah ini.
fn hello() {// statements or expressions here;}
Kemudian conventional style untuk penamaan function menggunakan snake case.
Pengelompokan tipe function
Rust sengaja mengelompokan function berdasarkan fungsi dan kegunaannya. Sehingga mudah untuk dikenali dan dibedakan. Berikut adalah beberapa kelompok function di Rust.
Normal Function
Adalah fungsi biasa yang tidak memiliki parameter dan tidak mengembalikan nilai, bisa dibilang ini naked function atau fungsi yang telanjang.
Function Parameters
Fungsi dengan sebuah parameter nilai yang disisipkan kedalam function untuk diolah lebih lanjut. contohnya seperti ini.
fn hello(name: &str) {println!("{}", name);}
Function Bodies Contain Statements & Expressions
Rust adalah expression-based language, mungkin di bahasa program yang lain hal ini tidak menjadi sebuah perbedaan, di Rust berbeda, untuk melihat perbedaannya kita coba untuk pahami dulu apa itu statements dan expression.
Statements adalah sebuah instruksi untuk melakukan aksi dan tidak mengembalikan sebuah nilai. Expressions mengevaluasi dan mengembalikan sebuah nilai.
Contoh statement let x = 1;
ini adalah statement, dan expression { let x = 3; x + 1 }
. Statement biasanya ditandai dengan semicolon (;
) di akhir statement, dan expression tidak memiliki semicolon.
Function with Return Values
Fungsi yang bisa mengembalikan sebuah nilai, fungsi ini ditandai dengan keyword ->
setelah nama fungsi, contohnya seperti dibawah ini.
fn add(x: i32, y: i32) -> i32 {x + y}
Nah contoh diatas adalah fungsi sederhana untuk menjumlahkan x dan y, yang kembaliannya adalah tipe data signed integer 32 bit.