Eksik Makro Parçacık Belirteçleri
NOT: Bu durum başlangıçta yalnızca 2024 sürümü için kesin hata yapıldı. Rust 2024’ten sonra yayımlanan Rust 1.89 ile birlikte lint tüm sürümlerde kesin hata haline getirildi.
Özet
missing_fragment_specifierlint’i artık kesin hatadır.
Ayrıntılar
missing_fragment_specifier lint’i, macro_rules! makro tanımındaki
kullanılmayan bir desende, parçacık belirteciyle (örneğin :expr)
izlenmeyen bir meta değişken ($e gibi) bulunduğu durumu tespit eder. Bu durum
2024 sürümünde kesin hata yapıldı.
macro_rules! foo {
() => {};
($name) => { }; // HATA: parçacık belirteci eksik
}
fn main() {
foo!();
}
Eksik belirteçli bir kuralla eşleşecek argümanlarla makroyu çağırmak
(örneğin foo!($name)), tüm sürümlerde zaten kesin hataydı. Ancak yalnızca
eksik parçacık belirteçli makro tanımlamak öyle değildi; yine de Rust 1.17’de
bunun için bir lint eklenmişti.
Taşıma
Kodunuzu 2024 sürümüne taşımak için makrodaki kullanılmayan eşleştirici kuralı kaldırın.
Bu değişiklik için otomatik taşıma yoktur. Bu makro tarzının son derece nadir
olduğunu düşünüyoruz. Lint, Rust 1.17’den beri gelecekte uyumsuzluk lint’i,
Rust 1.20’den beri varsayılan deny lint’i, Rust 1.82’den itibaren bu kalıbı
kullanan bağımlılıklar için uyarı veren bir lint idi; Rust 1.89’da ise kesin
hata haline geldi.