Ответ 1
Это делает fields
неизменяемыми снова.
fields
ранее были определены как изменяемые (let mut fields = …;
), для использования с sort_by_key
который сортирует на месте и требует, чтобы цель была изменяемой. Автор выбрал здесь, чтобы явно предотвратить дальнейшую изменчивость.
"Понижение" изменчивой привязки к неизменяемому довольно распространено в Rust.
Другой распространенный способ сделать это - использовать выражение блока:
let fields = {
let mut fields = …;
fields.sort_by_key(…);
fields
};