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 fields
değişmez kılıyor .
fields
önceden let mut fields = …;
, sort_by_key
yerinde 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 var
değişmez ve mevcut değerine bağlı. fields
daha mut
önce olduğu ilan edildi .