이 코드 는 야생에서 보았습니다 .
fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;
뭐라고합니까 let fields = fields;
라인은 무엇입니까? 왜 거기에 있습니까?
답변
그것은 만드는 fields
불변 다시합니다.
fields
이전에 변경 가능 ( let mut fields = …;
) 으로 정의되어 sort_by_key
제자리에서 정렬되고 대상이 변경 가능해야하는 데 사용됩니다 . 저자는 추가 변경 가능성을 명시 적으로 방지하기 위해 여기에서 선택했습니다.
변경 가능한 바인딩을 변경 불가능한 바인딩 “다운 그레이드”하는 것은 Rust에서 매우 일반적입니다.
이를 수행하는 또 다른 일반적인 방법은 블록 표현식을 사용하는 것입니다.
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};
답변
이 명령문 let var = var;
은 var
변경 불가능 하게 만들고 현재 값에 바인딩됩니다. 이전 fields
과 같이 선언되었습니다 mut
.