Vektor Struct
Simpan data kompleks dalam Vec.
Vektor Struct adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. 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 4 pelajaran total.
Mengapa Menggunakan Vektor Struct
Vektor dapat menyimpan tipe tunggal apa pun, termasuk struct buatan Anda sendiri. Vec<Person> menyimpan banyak people secara berurutan, sehingga cocok untuk daftar catatan seperti pengguna, item, atau skor.
Ini menggabungkan bentuk data khusus dengan daftar yang dapat diperbesar.
Mendefinisikan Struct
Pertama, definisikan struct yang ingin Anda simpan. Person ini memiliki nama dan usia.
Baris #[derive(Debug)] memungkinkan kita mencetak Person dengan {:?}, yang berguna untuk seluruh vektor.
#[derive(Debug)]
struct Person {
name: String,
age: u32,
}Membangun Vektor
Buat instance struct, lalu kumpulkan semuanya dalam makro vec!. Tipe vektor otomatis menjadi Vec<Person>.
Gunakan {:?} untuk mencetak semua catatan sekaligus.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 25 },
];
println!("{:?}", people);
}Menambahkan Struct
Anda juga dapat memulai dari vektor kosong dan push struct satu per satu. Vektor harus bersifat mut agar dapat diperbesar.
Pola ini cocok ketika catatan datang secara bertahap, misalnya dari masukan pengguna.
#[derive(Debug)]
struct Item { name: String }
fn main() {
let mut cart = Vec::new();
cart.push(Item { name: String::from("Pen") });
cart.push(Item { name: String::from("Mug") });
println!("{:?}", cart);
}Melakukan Perulangan pada Catatan
Lakukan perulangan pada &people untuk membaca setiap struct tanpa mengambil kepemilikannya. Di dalam perulangan, Anda mengakses field dengan notasi titik, seperti p.name.
Ini mencetak satu baris yang informatif untuk setiap catatan.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 25 },
];
for p in &people {
println!("{} is {}", p.name, p.age);
}
}Membaca Satu Field
Gunakan indeks pada vektor untuk mengakses satu struct, lalu gunakan notasi titik untuk field-nya. Jadi, people[0].name memberikan nama Person pertama.
Ingat, indeks dimulai dari 0 dan akses di luar rentang akan menyebabkan kepanikan.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
];
println!("name: {}", people[0].name);
}Mengubah Field
Untuk mengedit catatan, vektor harus bersifat mut. Kemudian akses struct berdasarkan indeks dan tetapkan nilainya ke field tersebut, seperti people[0].age = 31.
Ini memperbarui data yang tersimpan langsung di tempatnya.
struct Person { name: String, age: u32 }
fn main() {
let mut people = vec![
Person { name: String::from("Ann"), age: 30 },
];
people[0].age = 31;
println!("{}", people[0].age);
}Menjumlahkan Field
Iterator dapat mengambil satu field dari setiap catatan. Di sini, iter().map(|p| p.age).sum() menjumlahkan semua usia.
Langkah map mengubah setiap Person menjadi hanya usia sebelum penjumlahan dilakukan.
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 20 },
];
let total: u32 = people.iter().map(|p| p.age).sum();
println!("total age = {}", total);
}Menyaring Catatan
Gunakan iter().filter(...) untuk mempertahankan catatan yang sesuai dengan suatu aturan. Closure mengembalikan nilai bool untuk setiap struct.
Di sini kita menghitung berapa banyak people yang berusia setidaknya 30 tahun.
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 20 },
];
let adults = people.iter().filter(|p| p.age >= 30).count();
println!("adults: {}", adults);
}Mengurutkan berdasarkan Field
Urutkan catatan berdasarkan suatu field dengan sort_by_key. Berikan closure yang mengembalikan nilai yang dijadikan dasar pengurutan, seperti usia.
Vektor harus bersifat mut karena pengurutan mengubah susunannya.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let mut people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 20 },
];
people.sort_by_key(|p| p.age);
println!("{:?}", people);
}Menghitung Catatan
Jumlah struct yang tersimpan cukup diperoleh dengan len(), seperti pada vektor mana pun. Ini memberi tahu Anda berapa banyak catatan yang sedang disimpan.
Pasangkan dengan is_empty() sebagai pemeriksaan sebelum membaca catatan pertama.
struct Item { name: String }
fn main() {
let cart = vec![
Item { name: String::from("Pen") },
Item { name: String::from("Mug") },
];
println!("items: {}", cart.len());
}Pemeriksaan Singkat
Uji pemahaman Anda tentang vektor berisi struct.
Rangkuman
Anda menyimpan struct dalam Vec, membuatnya dengan vec! dan push, lalu membaca atau mengedit field berdasarkan indeks dan dalam perulangan.
Anda juga menjumlahkan, menyaring, mengurutkan berdasarkan field, dan menghitung catatan. Kini Anda dapat mengelola daftar data terstruktur dengan vektor.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Vektor Struct” gratis?
Ya — teks lengkap “Vektor 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 4 pelajaran total.
Apa yang akan aku pelajari di “Vektor Struct”?
Simpan data kompleks dalam Vec. 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 4 dari 4.
Berapa lama pelajaran “Vektor 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.