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 fieldskekekalan lagi.
fieldssebelumnya didefinisikan sebagai mutable ( let mut fields = …;), untuk digunakan dengan sort_by_keymengurutkan 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 vartidak berubah dan terikat pada nilainya saat ini. fieldsdideklarasikan seperti mutsebelumnya.