ฉันเห็นรหัสนี้ในป่า :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
อะไรlet fields = fields;สายทำอย่างไร ทำไมถึงมี?
ฉันเห็นรหัสนี้ในป่า :
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
อะไรlet fields = fields;สายทำอย่างไร ทำไมถึงมี?
คำตอบ:
มันทำให้fieldsไม่เปลี่ยนรูปอีกครั้ง
fieldsก่อนหน้านี้ถูกกำหนดให้เป็น mutable ( let mut fields = …;) เพื่อใช้กับการจัดsort_by_keyประเภทในสถานที่และกำหนดให้เป้าหมายสามารถเปลี่ยนแปลงได้ ผู้เขียนได้เลือกที่นี่เพื่อป้องกันการเปลี่ยนแปลงเพิ่มเติมอย่างชัดเจน
การ "ลดระดับ" การผูกที่เปลี่ยนแปลงไม่ได้กับการไม่เปลี่ยนรูปนั้นพบได้บ่อยใน Rust
อีกวิธีหนึ่งในการทำเช่นนี้คือการใช้นิพจน์บล็อก:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
คำสั่งlet var = var;ทำให้varไม่เปลี่ยนรูปและถูกผูกไว้กับค่าปัจจุบัน fieldsถูกประกาศไว้mutก่อนหน้านี้