Saya telah menemukan sejumlah jenis di Rust yang dilambangkan dengan satu apostrof:
'static
'r
'a
Apa pentingnya apostrof itu? Mungkin itu pengubah referensi ( &
)? Pengetikan umum khusus untuk referensi? Saya tidak tahu di mana dokumentasi untuk ini bersembunyi.
Jawaban:
Ini adalah masa hidup yang dinamai Rust.
Mengutip dari The Rust Programming Language :
Dengan kata lain, seumur hidup mendekati rentang eksekusi selama data yang dirujuk menjadi valid. Kompilator Rust akan secara konservatif menyimpulkan masa pakai sesingkat mungkin agar aman. Jika Anda ingin memberi tahu compiler bahwa masa pakai referensi lebih lama daripada perkiraan terpendek, Anda dapat menamainya, dengan mengatakan bahwa referensi keluaran, misalnya, memiliki masa pakai yang sama dengan referensi masukan yang diberikan.
The
'static
seumur hidup adalah seumur hidup khusus, paling lama hidup dari semua masa hidup - untuk durasi program. Contoh tipikal adalah string "literals" yang akan selalu tersedia selama masa pakai program / modul.Anda bisa mendapatkan lebih banyak informasi dari dek slide ini , mulai sekitar slide 29.
Lifetimes in Rust juga membahas masa hidup secara mendalam.
sumber
Untuk menambah jawaban yang sangat baik dari quux00, masa pakai bernama juga digunakan untuk menunjukkan asal dari variabel pinjaman yang dikembalikan ke kompilator karat.
Fungsi ini
pub fn f(a: &str, b: &str) -> &str { b }
tidak akan dikompilasi karena mengembalikan nilai pinjaman tetapi tidak menentukan apakah ia meminjamnya dari
a
ataub
.Untuk memperbaikinya, Anda akan mendeklarasikan masa pakai bernama dan menggunakan masa pakai yang sama untuk
b
dan jenis kembalian:pub fn f<'r>(a: &str, b: &'r str) -> &'r str { // ---- --- --- b }
dan gunakan seperti yang diharapkan
f("a", "b")
sumber