# Переменные в Rust: объявление, связывание (binding) и область видимости

> Как объявлять переменные в Rust с помощью let, работать со скрытием (shadowing) и соблюдать соглашение snake_case. Понятные примеры для начинающих.

- **URL:** https://eagle2000.space/rust/rust-var/
- **Date:** 2025-05-03

- **Tags:** rust, dev

---Переменная в программировании представляет собой область памяти с присвоенным именем, предназначенную для хранения данных. В языке Rust объявление переменной осуществляется с помощью ключевого слова `let`, после которого указывается имя переменной.

## Именование переменных

В Rust принято использовать стиль `snake_case` для именования переменных. Это означает, что имя переменной пишется в нижнем регистре, а слова разделяются символом подчеркивания (_). Например, `my_variable`.

## Объявление и присвоение переменных

При объявлении переменной вы можете указать ее тип, например, `i32`, или доверить компилятору вывести тип самостоятельно на основе присвоенного значения.


### 💻 Объявление и присвоение переменных в Rust


#### Шаг 1

```rust
fn main() {
    let sensors = 20;
    println!("Количество датчиков: {}", sensors);
}
```

**Объявление переменной**
- Ключевое слово `let` объявляет новую переменную.
- Компилятор автоматически выводит тип как `i32` на основе значения `20`.


#### Шаг 2

```rust
fn main() {
    let ultra = 10;
    let temp = ultra;
    println!("Значение temp: {}", temp);
}
```

**Присвоение значения другой переменной**
- Мы можем скопировать значение из одной переменной в другую.
- Теперь `temp` хранит копию значения `10`.


#### Шаг 3

```rust
fn main() {
    let ultra = 10;
    let temp = 5;
    let sensors = ultra + temp;
    println!("Сумма датчиков (sensors): {}", sensors);
}
```

**Присвоение результата выражения**
- Переменной можно присвоить результат математического выражения.
- Здесь `sensors` принимает результат сложения `10 + 5 = 15`.


{{< alert "comment" >}}
**Интересный момент:** Rust не любит, когда вы объявляете переменную, но не используете её. Go кстати тоже не любит.
Но в Rust можно перед названием переменной поставить _ и тогда компилятор проигнорирует такую переменную. Пример: 
```let _ignore_me = 42; ```
{{< /alert >}}

## Изменяемость переменных

По умолчанию переменные в Rust являются неизменяемыми (`immutable`). Это означает, что после объявления переменной ее значение не может быть изменено. Если вам необходимо изменить значение переменной, вы можете объявить ее как изменяемую (`mutable`), используя ключевое слово `mut`:
```rust
let mut sensors = 20;
sensors = 30; // Теперь sensors имеет значение 30
```
В этом примере мы объявляем `sensors` как изменяемую переменную и затем изменяем ее значение на `30`.


