Penjelasan tentang Referensi dan Peminjaman
Pelajari referensi dan peminjaman, yang memungkinkan beberapa bagian kode Anda mengakses data tanpa mengambil kepemilikan secara aman.
Penjelasan tentang Referensi dan Peminjaman adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 2 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.
Apa Itu Referensi?
Di Rust, variabel memiliki datanya. Namun, bagaimana jika Anda perlu membiarkan bagian lain dari kode melihat atau bahkan mengubah data tersebut tanpa mengambil kepemilikannya?
Di sinilah referensi berperan! Referensi mirip seperti penunjuk ke suatu nilai, tetapi dengan aturan ketat yang diterapkan oleh kompiler Rust.
Bayangkan Anda melihat sesuatu melalui jendela, bukan memiliki benda itu sendiri.
Referensi Pertama Anda
Kita membuat referensi menggunakan operator &. Operator ini membuat penunjuk non-pemilik ke suatu nilai. Mari lihat penerapannya:
fn print_length(s: &String) {
println!("The length is: {}", s.len());
}
fn main() {
let message = String::from("Hello, CoddyKit!");
print_length(&message); // Pass a reference
println!("Original message still here: {}", message);
}Memahami Peminjaman
Saat Anda membuat referensi ke suatu nilai, Anda sedang meminjam nilai tersebut. Pemiliknya tetap memilikinya, tetapi Anda mendapatkan akses sementara.
- Meminjamkan tanpa memberikan: Anda dapat menggunakan data yang dipinjam.
- Tidak ada perpindahan kepemilikan: Variabel asli tetap memiliki data tersebut dan akan menghapusnya saat keluar dari cakupan.
- Keamanan sebagai prioritas: Aturan peminjaman Rust mencegah kesalahan pemrograman umum seperti perlombaan data.
Peminjaman Tidak Dapat Diubah: Akses Hanya-Baca
Secara bawaan, referensi di Rust bersifat tidak dapat diubah. Artinya, Anda dapat membaca data yang ditunjuknya, tetapi tidak dapat mengubahnya.
Ini adalah fitur keamanan inti! Jika beberapa bagian kode Anda memiliki akses hanya-baca, bagian-bagian tersebut tidak dapat saling mengganggu data secara tidak sengaja.
Peminjaman Tidak Dapat Diubah dalam Praktik
Di sini, fungsi calculate_sum menerima referensi tidak dapat diubah ke sebuah vektor. Fungsi tersebut dapat membaca elemen-elemen vektor, tetapi tidak dapat menambah atau menghapusnya.
fn calculate_sum(numbers: &Vec<i32>) -> i32 {
let mut total = 0;
for num in numbers {
total += num;
}
total
}
fn main() {
let my_numbers = vec![10, 20, 30, 40];
let sum = calculate_sum(&my_numbers); // Immutable borrow
println!("The sum is: {}", sum);
println!("Original vector: {:?}", my_numbers);
}Peminjaman Mutable: Mengubah Data
Terkadang, Anda perlu mengubah data yang telah Anda pinjam. Untuk itu, Anda menggunakan referensi mutable, yang ditulis sebagai &mut.
Referensi mutable memiliki aturan penting: Anda hanya boleh memiliki satu referensi mutable ke bagian data tertentu pada satu waktu. Hal ini mencegah balapan data dan menjamin keamanan.
Mengubah Data dengan &mut
Fungsi add_suffix menerima referensi mutable ke sebuah String. Fungsi ini dapat mengubah String asli secara langsung.
fn add_suffix(text: &mut String) {
text.push_str(" (modified)");
}
fn main() {
let mut my_string = String::from("Original text");
add_suffix(&mut my_string); // Mutable borrow
println!("Modified string: {}", my_string);
}Aturan Emas Peminjaman
Kompilator Rust menegakkan aturan-aturan ini saat kompilasi untuk menjamin keamanan memori:
- Anda dapat memiliki satu referensi mutable ke suatu bagian data pada satu waktu.
- OR, Anda dapat memiliki referensi immutable dalam jumlah berapa pun pada satu waktu.
- Anda tidak boleh memiliki referensi mutable selama masih ada referensi immutable yang aktif.
- Referensi harus selalu valid (referensi tidak boleh memiliki lifetime yang melampaui data yang ditunjuknya).
Aturan-aturan ini mencegah balapan data serta memastikan program Anda aman dan dapat diprediksi.
Peminjaman yang Bertentangan
Kode ini mencoba membuat referensi immutable dan mutable ke my_value pada saat yang sama, sehingga melanggar aturan peminjaman Rust. Kode ini akan NOT berhasil dikompilasi.
Cobalah menjalankannya dan lihat error dari kompilator!
fn main() {
let mut my_value = 100;
let r1 = &my_value; // Immutable reference
let r2 = &mut my_value; // Mutable reference (problem here!)
println!("r1: {}", r1);
// println!("r2: {}", r2); // This line would also cause an error if uncommented
}Uji Pemahaman Anda
Perhatikan cuplikan kode Rust berikut:
fn process_data(data: &mut Vec<i32>) {
data.push(4);
}
fn main() {
let mut numbers = vec![1, 2, 3];
let first_ref = &numbers[0]; // Line A
process_data(&mut numbers); // Line B
println!("First element: {}", first_ref); // Line C
}Baris mana yang akan menyebabkan error saat kompilasi karena aturan peminjaman Rust?
Rangkuman: Referensi & Peminjaman
Kerja bagus! Anda telah mempelajari dasar-dasar referensi dan peminjaman dalam Rust:
- Referensi (
&) memungkinkan Anda mengakses data tanpa mengambil kepemilikannya. - Peminjaman adalah tindakan membuat referensi, yaitu meminjamkan akses ke data.
- Referensi immutable (
&) menyediakan akses hanya-baca. - Referensi mutable (
&mut) menyediakan akses baca/tulis. - Aturan peminjaman Rust yang ketat (satu mutable OR banyak immutable) mencegah balapan data dan menjamin keamanan memori saat kompilasi.
Konsep-konsep ini sangat penting untuk menulis kode Rust yang aman dan efisien!
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penjelasan tentang Referensi dan Peminjaman” gratis?
Ya — teks lengkap “Penjelasan tentang Referensi dan Peminjaman” 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 “Penjelasan tentang Referensi dan Peminjaman”?
Pelajari referensi dan peminjaman, yang memungkinkan beberapa bagian kode Anda mengakses data tanpa mengambil kepemilikan secara aman. 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 2 dari 3.
Berapa lama pelajaran “Penjelasan tentang Referensi dan Peminjaman” 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
- Memahami Model Kepemilikan Rust
- Penjelasan tentang Referensi dan Peminjaman
- Masa Hidup untuk Referensi yang Aman