Затенение (variable shadowing)#
Затенение переменных - это концепция Rust, которая позволяет повторно объявить переменную с тем же именем, используя ключевое слово let. При этом оригинальная переменная заменяется (затеняется) новой, что позволяет изменять тип или состояние данных без создания временных переменных (например, temp_str или temp_float).
Пример использования затенения#
Один из наиболее распространенных примеров, где это может потребоваться - это последовательная трансформация данных и работа с локальными областями видимости (например, обработка данных с температурных датчиков или сенсоров яркости в умном доме).
Описание работы примера:#
Шаг 1. Последовательная трансформация данных:
- Сначала мы объявили переменную
temperatureсо строковым значением"25.5". - Затем с помощью ключевого слова
letзатенили её новой переменной типаf64, распарсив строку. - Далее мы перевели значение в Фаренгейты, а затем переопределили её как изменяемую (
mut), прибавив единицу. Это позволяет повторно использовать понятное имя переменной без придумывания временных названий.
- Сначала мы объявили переменную
Шаг 2. Затенение в рамках области видимости (scope):
- Мы объявили внешнюю переменную
brightnessсо строковым значением"50". - Внутри блока
{}мы объявили локальную переменнуюbrightnessс типомu8и числовым значением50. - Внутри блока мы затенили её ещё раз, увеличив на
20. - После выхода из блока все временные локальные переменные очищаются из стека, и внешняя переменная восстанавливает своё оригинальное значение
"50".
- Мы объявили внешнюю переменную
Надеюсь, эта статья помогла вам понять концепцию затенения переменных в Rust и избавит вас от придумывания новых имен для переменных наподобие upd_temperature.
История обновлений
- Добавил примеры с кодом для демонстрации концепции затенения переменных (variable shadowing).


