Avatar ·

O que significa a construção `let x = x;` em Rust e para que serve?

Olá a todos! Comecei a estudar Rust e me deparei com uma construção estranha no código de outra pessoa: ```rust let x = 5; let x = x; ``` O que é isso? Por que reatribuir a variável a ela mesma? Isso é alguma magia ou bug? Tentei executar esse código e funciona, mas não entendo qual é o sentido. Será que está relacionado à mutabilidade? Por exemplo, vi este código: ```rust let mut x = 10; let x = x; // Agora x é imutável? ``` Ou é apenas uma forma de "reiniciar" a variável? Expliquem, por favor, para um iniciante. Já li sobre sombreamento (shadowing), mas aqui é uma forma estranha onde o nome e o valor coincidem. Existe alguma aplicação prática nisso, ou é apenas uma escrita redundante? Agradeço desde já! <<>>

Resposta curta

A construção let x = x; em Rust é um caso específico de sombreamento (shadowing) de variável. Ela cria uma nova variável com o mesmo nome, mas com outras propriedades (mutabilidade, tipo, escopo).