ฉันเห็นรหัสนี้ในป่า :
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
ก่อนหน้านี้