Anotasi Lifetime
Memberi nama lifetime
Anotasi Lifetime adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 2 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.
Memberi Nama pada Lifetime
Anotasi lifetime adalah nama yang diawali apostrof, seperti 'a. Anotasi ini tidak mengubah lamanya sesuatu hidup; anotasi ini menjelaskan hubungan antar-lifetime referensi.
Tempat Meletakkan Anotasi
Anda mendeklarasikan parameter lifetime dalam tanda kurung sudut setelah nama fungsi, lalu menggunakannya pada tipe referensi, sama seperti parameter tipe generik.
Sintaks: fn name<'a>(x: &'a T) -> &'a T.
Fungsi longest Klasik
Fungsi yang mengembalikan salah satu dari dua referensi memerlukan anotasi. 'a menyatakan bahwa hasilnya hidup selama input yang lebih singkat.
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
fn main() {
let a = String::from("long string");
let b = String::from("short");
println!("{}", longest(&a, &b));
}Arti 'a di Sini
Anotasi tersebut memberi tahu kompilator: referensi yang dikembalikan hanya valid selama kedua input masih valid. Kompilator kemudian memeriksa setiap tempat pemanggilan berdasarkan kontrak ini.
Mengapa Ini Diperlukan
Tanpa anotasi, kompilator tidak dapat mengetahui apakah hasil tersebut meminjam dari x atau y. Nama lifetime menghubungkan keduanya sehingga pemeriksa peminjaman dapat menganalisis hasilnya.
Lifetime yang Berbeda
Jika referensi tidak saling berkaitan, berikan nama lifetime yang berbeda. Di sini hanya x yang dikembalikan, jadi hanya lifetime-nya yang penting bagi hasil.
fn first<'a, 'b>(x: &'a str, _y: &'b str) -> &'a str {
x
}
fn main() {
let a = String::from("keep me");
let b = String::from("ignore");
println!("{}", first(&a, &b));
}Lifetime Tidak Memperpanjang Masa Hidup
Anotasi tidak pernah membuat data hidup lebih lama. Anotasi hanya menyatakan batasan yang harus diverifikasi kompilator. Jika suatu nilai berakhir terlalu cepat, kode tidak akan dapat dikompilasi terlepas dari anotasinya.
Pemanggilan yang Valid
Selama kedua input tetap hidup hingga hasilnya digunakan, pemanggilan tersebut diterima. Di sini kedua string tetap hidup hingga pencetakan, jadi semuanya baik-baik saja.
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
fn main() {
let a = String::from("abcdef");
let result;
{
let b = String::from("xy");
result = longest(&a, &b);
println!("chosen: {}", result);
}
}Lifetime dengan Generik
Parameter lifetime dan tipe dapat muncul secara bersamaan. Lifetime dicantumkan terlebih dahulu di dalam tanda kurung sudut.
use std::fmt::Display;
fn announce<'a, T: Display>(text: &'a str, value: T) -> &'a str {
println!("value is {}", value);
text
}
fn main() {
let msg = String::from("hello");
println!("{}", announce(&msg, 42));
}Lifetime 'static
'static adalah lifetime khusus yang berarti referensi dapat hidup sepanjang program. Literal string memilikinya karena sudah tertanam dalam berkas biner.
fn motto() -> &'static str {
"fearless concurrency"
}
fn main() {
println!("{}", motto());
}Membaca Anotasi
Bacalah &'a str sebagai referensi string yang valid selama masa hidup 'a. Jika dua parameter menggunakan 'a yang sama, kompiler mengaitkan masa hidup keduanya dengan masa hidup yang lebih singkat pada setiap pemanggilan.
Pemeriksaan Singkat
Uji pemahaman Anda tentang anotasi lifetime.
Ringkasan
Anda telah mempelajari cara memberi nama lifetime:
- Lifetimes menggunakan nama seperti
'a, yang dideklarasikan di dalam tanda kurung sudut - Nama yang sama menyatakan bahwa referensi saling berkaitan (misalnya, hasil terkait dengan input)
- Anotasi menjelaskan lifetime, bukan memperpanjangnya
'staticberarti valid selama seluruh program
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Anotasi Lifetime” gratis?
Ya — teks lengkap “Anotasi Lifetime” 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 “Anotasi Lifetime”?
Memberi nama lifetime 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 4.
Berapa lama pelajaran “Anotasi Lifetime” 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
- Mengapa Lifetime
- Anotasi Lifetime
- Lifetime dalam Struct
- Aturan Elisi