[rust] Rust에서 ‘let x = x’는 무엇을합니까?

이 코드 는 야생에서 보았습니다 .

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.


답변