Lompati ke konten utama
Modul 1 · Pelajaran 2 dari 22/14 dalam kursus~10 min
Pelajaran modul (2/2)

Tipe Primitif

Rust adalah bahasa yang diketik secara statis, artinya ia harus mengetahui tipe semua variabel pada waktu kompilasi. Biasanya, kompiler dapat menyimpulkan tipe berdasarkan nilai yang ditetapkan, namun terkadang perlu atau membantu untuk menentukannya secara manual.

Tipe primitif di Rust dibagi menjadi dua kategori utama: skalar (nilai tunggal) dan gabungan (kelompok nilai).

Jenis Skalar

Tipe skalar mewakili satu nilai. Karat memiliki empat tipe skalar dasar:

  1. Bilangan Bulat: Bilangan bulat. Mereka dapat ditandatangani (i8, i16, i32, i64, i128, isize) atau tidak ditandatangani (u8, u16, u32, u64, u128, usize). Tipe defaultnya adalah i32.
  2. Titik mengambang: Angka dengan koma desimal. Bisa berupa f32 atau f64 (presisi ganda, default).
  3. Boolean: Mewakili kebenaran logis dengan true atau false (ketik bool).
  4. Karakter: Nilai skalar Unicode tunggal yang diapit tanda kutip tunggal (ketik char), misalnya 'a', 'ℤ', atau emoji '😻'.

Contoh anotasi tipe eksplisit:

Rust
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';

Jenis Senyawa

Tipe gabungan dapat mengelompokkan beberapa nilai ke dalam satu tipe. Karat memiliki dua jenis senyawa primitif utama:

Tupel

Tuple mengelompokkan nilai dari tipe berbeda ke dalam koleksi berukuran tetap:

Rust
let person: (String, i32) = (String::from("Alice"), 30);

// Destructuring to extract values
let (name, age) = person;

// Direct access with index using dot (.)
let name_direct = person.0;
let age_direct = person.1;

Array (Daftar ukuran tetap)

Array mengelompokkan beberapa elemen dengan tipe yang sama ke dalam koleksi berukuran tetap yang disimpan di tumpukan:

Rust
let numbers = [1, 2, 3, 4, 5]; // Inferred as [i32; 5]
let first = numbers[0]; // Access by index
let third = numbers[2];

Jika Anda mencoba mengakses indeks di luar batas array (mis., numbers[10]), Rust akan langsung crash (panik) saat runtime alih-alih mengizinkan akses memori yang tidak sah.

Perbandingan

FiturTupelHimpunan
Jenis elemenBisa berbedaHarus sama
UkuranMemperbaikiMemperbaiki
AksesIndeks melalui titik (misalnya, .0)Tanda kurung siku (mis., [0])

Cobalah sendiri

Latihan#rust.m1.l2.e1
Upaya: 0Memuat…

Deklarasikan tuple bernama stats yang berisi usia 30 (integer) dan skor 95,5 (float). Selanjutnya, cetak skor ke layar dengan mengakses langsung elemen kedua tupel menggunakan indeksnya.

Memuat editor…
Tunjukkan petunjuk

Buat tuple dengan `let stats = (30, 95.5);`. Akses elemen kedua menggunakan `stats.1` di dalam makro `println!`.

Solusi tersedia setelah 3 upaya

Latihan#rust.m1.l2.e2
Upaya: 0Memuat…

Deklarasikan array bernama angka yang berisi nilai integer dari 1 hingga 5. Cetak elemen ketiga array (indeks 2) ke layar menggunakan println!.

Memuat editor…
Tunjukkan petunjuk

Deklarasikan array dengan `biarkan angka = [1, 2, 3, 4, 5];` dan akses elemen ketiga dengan mengindeksnya dengan `[2]`.

Solusi tersedia setelah 3 upaya

Latihan#rust.m1.l2.e3
Upaya: 0Memuat…

Mengingat tuple `let point = (10, 20);`, gunakan destrukturisasi untuk mengekstrak nilai menjadi dua variabel bernama `x` dan `y`. Kemudian, cetak jumlah `x` dan `y`.

Memuat editor…
Tunjukkan petunjuk

Gunakan sintaksis `let (x, y) = point;` untuk mengubah struktur tuple dan kemudian menjumlahkan variabel dalam `println!`.

Solusi tersedia setelah 3 upaya