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.

LengthSignedUnsigned
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

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 default
let c: f32 = 3.2; // f32
}

Numeric Operations

Rust juga mendukung operasi matematika, misalnya untuk operasi penjumlahan, pembagian, dan pengurangan.

fn main() {
// addition
let addition = 5 + 10;
// subtraction
let subtraction = 95.5 - 4.3;
// multiplication
let multiplication = 4 * 30;
// division
let division = 56.7 / 32.2;
// modulo
let 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.