0Pricing
Learn Rust Coding · Pelajaran

Mendefinisikan dan Menggunakan Struct

Buat struktur data khusus dengan struct, termasuk struct tuple dan struct mirip unit, untuk mengelompokkan data yang berkaitan.

Mendefinisikan dan Menggunakan Struct adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 3 pelajaran total.

Mengenal Struct: Tipe Data Kustom

Dalam Rust, struct (singkatan dari struktur) adalah cara untuk membuat tipe data kustom yang memungkinkan Anda memberi nama dan mengemas beberapa nilai terkait ke dalam satu kelompok yang bermakna.

Anggaplah struct sebagai cetak biru untuk pengguna, warna, atau titik di ruang. Daripada memiliki variabel terpisah untuk nama, email, dan usia pengguna, Anda dapat menempatkan semuanya di dalam struct User.

Hal ini membantu Anda mengatur data secara logis serta membuat kode lebih mudah dibaca dan dipelihara.

Mendefinisikan Struct Klasik

Jenis struct yang paling umum adalah struct klasik, yang memberi nama pada setiap bagian data, yang disebut field. Berikut cara mendefinisikannya:

struct User {
    username: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

fn main() {
    // This code only defines the struct blueprint.
    // No actual user has been created yet!
    println!("Struct 'User' blueprint defined.");
}

Membuat Instance Struct

Setelah mendefinisikan struct, Anda dapat membuat instance konkretnya. Setiap instance menyimpan nilai tertentu untuk field-nya. Anda membuat instance dengan menentukan nilai konkret untuk setiap field.

struct User {
    username: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

fn main() {
    let user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };
    println!("User instance created!");
}

Mengakses Field Struct

Untuk mengambil data dari instance struct, Anda menggunakan notasi titik. Cukup tulis nama instance, titik (.), lalu nama field.

struct User {
    username: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

fn main() {
    let user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };
    println!("User's username: {}", user1.username);
    println!("User's email: {}", user1.email);
}

Mutabilitas pada Struct

Sama seperti variabel biasa, seluruh instance struct dapat dibuat mutable menggunakan kata kunci mut. Jika sebuah instance mutable, semua field-nya dapat diubah.

Anda tidak dapat membuat hanya field tertentu menjadi mutable; mutabilitas berlaku untuk seluruh instance struct.

struct User {
    username: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

fn main() {
    let mut user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };
    
    println!("Old email: {}", user1.email);
    user1.email = String::from("new_alice@example.com");
    println!("New email: {}", user1.email);
}

Struct Tuple: Field Tanpa Nama

Struct tuple adalah bentuk struct lain yang tampak seperti tuple, tetapi memiliki nama. Struct ini berguna saat Anda ingin memberi tuple nama tipe yang berbeda, tetapi tidak perlu memberi nama pada setiap field-nya.

Misalnya, Color(i32, i32, i32) adalah tuple bernama yang mengelompokkan tiga bilangan bulat.

struct Color(i32, i32, i32);
struct Point(i32, i32, i32);

fn main() {
    let black = Color(0, 0, 0);
    let origin = Point(0, 0, 0);
    println!("Tuple structs 'Color' and 'Point' defined.");
}

Menggunakan Struct Tuple

Membuat instance struct tuple mirip dengan membuat tuple biasa. Untuk mengakses nilai di dalamnya, Anda menggunakan notasi titik dengan indeks, dimulai dari 0.

struct Color(i32, i32, i32);
struct Point(i32, i32, i32);

fn main() {
    let black = Color(0, 0, 0);
    let origin = Point(0, 0, 0);

    println!("Black color: R={}, G={}, B={}", black.0, black.1, black.2);
    println!("Origin point: X={}, Y={}, Z={}", origin.0, origin.1, origin.2);
}

Struct Mirip Unit: Penanda

Anda juga dapat mendefinisikan struct yang sama sekali tidak memiliki field. Struct ini disebut struct mirip unit karena perilakunya mirip dengan tipe unit ().

Struct ini sering digunakan sebagai penanda untuk mengimplementasikan trait tertentu pada suatu tipe, saat datanya sendiri tidak penting.

struct AlwaysTrue;

fn main() {
    let subject = AlwaysTrue;
    // Unit-like structs don't store data directly,
    // but they can be instantiated and used as types.
    println!("Unit-like struct 'AlwaysTrue' created.");
}

Sintaks Pembaruan Struct

Jika Anda perlu membuat instance struct baru berdasarkan instance yang sudah ada, tetapi hanya ingin mengubah beberapa nilai field, Rust menyediakan sintaks pembaruan struct (..) yang praktis.

Sintaks ini memindahkan field yang tersisa dari instance yang ditentukan, sehingga instance asli tidak dapat lagi digunakan jika memiliki field yang mengimplementasikan Copy.

struct User {
    username: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

fn main() {
    let user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };

    let user2 = User {
        email: String::from("bob@example.com"),
        username: String::from("bob456"),
        ..user1 // Copy remaining fields from user1
    };

    println!("User 2 email: {}", user2.email);
    println!("User 2 active: {}", user2.active);
    // user1.username is now moved, so user1 can't be used here.
}

Kuis Struct

Uji pemahaman Anda tentang struct Rust.

Rangkuman: Ikhtisar Struct

Anda telah mempelajari cara mendefinisikan dan menggunakan struct dalam Rust!

  • Struct klasik mengelompokkan field bernama untuk membuat tipe data kustom.
  • Struct tuple adalah tuple bernama yang berguna saat nama field tidak benar-benar diperlukan.
  • Struct mirip unit tidak memiliki field dan berfungsi sebagai penanda.
  • Instance struct dapat dibuat mut agar field-nya dapat diubah.
  • Sintaks .. membantu membuat instance baru dari instance yang sudah ada.

Struct merupakan dasar penting untuk mengatur data terkait dalam program Rust, sehingga kode Anda menjadi lebih terstruktur dan mudah dibaca.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mendefinisikan dan Menggunakan Struct” gratis?

Ya — teks lengkap “Mendefinisikan dan Menggunakan Struct” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Mendefinisikan dan Menggunakan Struct”?

Buat struktur data khusus dengan struct, termasuk struct tuple dan struct mirip unit, untuk mengelompokkan data yang berkaitan. Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.

Berapa lama pelajaran “Mendefinisikan dan Menggunakan Struct” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendefinisikan dan Menggunakan Struct
  2. Enum untuk Tipe Khusus
  3. Pencocokan Pola yang Ampuh
← Kembali ke Learn Rust Coding