Что делает "let x = x" в Rust? - PullRequest
       6

Что делает "let x = x" в Rust?

0 голосов
/ 08 февраля 2019

Я видел этот код в дикой природе :

fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;

Что делает строка let fields = fields;?Почему это там?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Это делает fields снова неизменным.

fields был ранее определен как изменяемый (let mut fields = …;), для использования с sort_by_key, который сортирует на месте и требует, чтобы цель была изменяемой,Автор выбрал здесь явное предотвращение дальнейшей изменчивости.

«Понижение» изменяемой привязки к неизменяемому довольно распространено в Rust.

Другой распространенный способ сделать это - использовать выражение блока:

let fields = {
    let mut fields = …;
    fields.sort_by_key(…);
    fields
};
0 голосов
/ 08 февраля 2019

Оператор let var = var; делает var неизменным и привязанным к его текущему значению.fields был объявлен как mut ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...