Ham Ömürler
Özet
'r#ident_or_keywordartık bir ömür olarak kullanılabilir; böylece'r#fngibi anahtar kelimeler de ömür adı olarak yazılabilir.
Ayrıntılar
Ham ömürler, yeni anahtar kelimeler getiren daha yeni sürümlere taşınmayı
kolaylaştırmak için 2021 sürümünde eklendi. Bu özellik, tanımlayıcılar için
aynı işi yapan [ham tanımlayıcılar] ile benzerdir. Örneğin 2024 sürümü gen
anahtar kelimesini getirdi. Ömürler anahtar kelime olamayacağı için 'gen
ömrünü kullanan kod derlenmez hale gelirdi. Ham ömürler sayesinde taşıma
lint’i bu tür ömürleri 'r#gen biçimine dönüştürebilir ve böylece anahtar
kelimeler kullanılabilir hale gelir.
2021 öncesi sürümlerde ham ömürler ayrı token’lar olarak ayrıştırılır.
Örneğin 'r#foo, üç token şeklinde yorumlanır: 'r, # ve foo.
Taşıma
2021 sürümünün bir parçası olarak, Rust 2018 kod tabanlarını Rust 2021’e
otomatik taşımaya yardımcı olmak için
rust_2021_prefixes_incompatible_syntax lint’i eklendi.
Kodunuzu Rust 2021 ile uyumlu hale getirmek için şunu çalıştırın:
cargo fix --edition
Kodunuzu elle taşımak isterseniz ya da buna ihtiyaç duyarsanız süreç oldukça düzdür.
Şöyle tanımlanmış bir makronuz olduğunu varsayalım:
#![allow(unused)]
fn main() {
macro_rules! benim_makrom {
($a:tt $b:tt $c:tt) => {};
}
}
Rust 2015 ve 2018’de, token’lar arasına boşluk koymadan bu makroyu şu şekilde çağırmak geçerlidir:
benim_makrom!('r#foo);
2021 sürümünde bu artık tek bir token olarak ayrıştırılır. Bu yüzden makroyu çağırmak için tanımlayıcıdan önce şu şekilde boşluk eklemeniz gerekir:
benim_makrom!('r# foo);