Bu kodu vahşi ortamda gördüm :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Ne geliyor let fields = fields;hat mı? Neden orada?
Bu kodu vahşi ortamda gördüm :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Ne geliyor let fields = fields;hat mı? Neden orada?
Yanıtlar:
Yine fieldsdeğişmez kılıyor .
fieldsönceden let mut fields = …;, sort_by_keyyerinde sıralayan ve hedefin değiştirilebilir olmasını gerektiren mutable ( ) olarak tanımlanmıştı . Yazar, daha fazla değişkenliği açıkça önlemek için burayı seçti.
Değişken bir bağın değişmeze "indirgenmesi" Rust'ta oldukça yaygındır.
Bunu yapmanın başka bir yaygın yolu da bir blok ifadesi kullanmaktır:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
İfadesi let var = var;yapar vardeğişmez ve mevcut değerine bağlı. fieldsdaha mutönce olduğu ilan edildi .