Saya melihat kode ini di alam liar :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Apa fungsi let fields = fields;
garis itu? Kenapa disana?
Saya melihat kode ini di alam liar :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
Apa fungsi let fields = fields;
garis itu? Kenapa disana?
Jawaban:
Itu membuat fields
kekekalan lagi.
fields
sebelumnya didefinisikan sebagai mutable ( let mut fields = …;
), untuk digunakan dengan sort_by_key
mengurutkan di tempat dan membutuhkan target untuk bisa berubah. Penulis telah memilih di sini untuk secara eksplisit mencegah mutabilitas lebih lanjut.
"Menurunkan" pengikatan yang dapat diubah menjadi yang tidak dapat diubah cukup umum di Rust.
Cara umum lainnya untuk melakukan ini adalah dengan menggunakan ekspresi blok:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
Pernyataan itu let var = var;
membuat var
tidak berubah dan terikat pada nilainya saat ini. fields
dideklarasikan seperti mut
sebelumnya.