let и изменяемость
Связывания и изменяемость
«let и изменяемость» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 4 уроков всего.
Binding Values with let
В Rust переменная создается с помощью ключевого слова let. Это связывает имя со значением.
По умолчанию любая привязка является неизменяемой — как только вы присвоили ей значение, изменить его уже нельзя.
fn main() {
let x = 5;
println!("The value of x is: {}", x);
}Immutable by Default
Rust делает переменные неизменяемыми намеренно. Это предотвращает случайные изменения и упрощает понимание кода.
Попытка переназначить неизменяемую привязку вызывает ошибку компиляции, а не аварийное завершение во время выполнения.
let x = 5;, а затемx = 6;не скомпилируется.
fn main() {
let x = 5;
// x = 6; // this would cause a compile error
println!("x stays {}", x);
}Making Variables Mutable
Когда вам нужно изменить значение, добавьте ключевое слово mut. Оно помечает привязку как изменяемую.
Теперь вы можете переприсваивать её столько раз, сколько захотите.
fn main() {
let mut count = 0;
count = count + 1;
count += 1;
println!("count is {}", count);
}Type Inference
Rust обычно определяет тип переменной на основе её значения. Это называется выводом типов.
let x = 5; автоматически присваивает x тип i32.
fn main() {
let n = 42; // inferred as i32
let pi = 3.14; // inferred as f64
println!("{} and {}", n, pi);
}Type Annotations
Вы также можете явно указать тип с помощью двоеточия и имени типа. Это называется аннотацией типа.
Аннотации полезны, когда компилятор не может вывести тип самостоятельно, или для наглядности.
fn main() {
let age: u32 = 30;
let price: f64 = 9.99;
println!("age {} price {}", age, price);
}Constants
const всегда неизменяема и должна иметь аннотацию типа. Её значение должно быть известно во время компиляции.
Согласно соглашению, константы записываются в формате SCREAMING_SNAKE_CASE.
fn main() {
const MAX_POINTS: u32 = 100_000;
println!("Max is {}", MAX_POINTS);
}const vs let
Ключевые различия между const и let:
constникогда не может бытьmut.constтребует аннотации типа.constдолжен быть константным выражением, вычисляемым во время компиляции.- Значения
letмогут вычисляться во время выполнения.
fn main() {
const SECONDS_PER_HOUR: u32 = 60 * 60;
let hours = 3;
println!("{} seconds", SECONDS_PER_HOUR * hours);
}Mutating in a Loop
Изменяемые переменные часто используются в циклах, где значение накапливается с течением времени.
Здесь мы суммируем числа, используя аккумулятор mut.
fn main() {
let mut total = 0;
for i in 1..=5 {
total += i;
}
println!("Sum is {}", total);
}Underscore for Unused
Если вы связываете значение, но никогда его не используете, Rust выдаст предупреждение. Добавьте символ подчеркивания перед именем, чтобы подавить это предупреждение.
let _unused = 10;сообщает компилятору, что это сделано намеренно.
fn main() {
let _temp = 99;
let used = 1;
println!("{}", used);
}Multiple Bindings
Вы можете объявить несколько переменных на отдельных строках, каждую со своим собственным let.
Каждое связывание является независимым и неизменяемым, если оно не помечено как mut.
fn main() {
let name = "Rust";
let year = 2010;
let mut version = 1;
version += 1;
println!("{} born {} v{}", name, year, version);
}Why Immutability Helps
Неизменяемость — это функция обеспечения безопасности. Когда компилятор знает, что значение не может измениться, он может давать более веские гарантии и предотвращать целые классы ошибок.
Используйте изменяемость с помощью ключевого слова mut только тогда, когда это действительно необходимо.
fn main() {
let config = "production";
// config is guaranteed not to change
println!("Running in {}", config);
}Quick Check
Какое ключевое слово делает переменную в Rust изменяемой?
Recap
Вы изучили основы связывания (bindings) в Rust:
letсвязывает имя со значением, по умолчанию неизменяемым.mutделает связывание изменяемым.- Rust выводит типы автоматически, но вы можете добавлять аннотации с помощью
:. constвычисляется во время компиляции, всегда неизменяем и требует явного указания типа.
fn main() {
let mut score: u32 = 0;
const BONUS: u32 = 10;
score += BONUS;
println!("Final score: {}", score);
}Часто задаваемые вопросы
Урок «let и изменяемость» бесплатный?
Да — полный текст урока «let и изменяемость» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 4 уроков всего.
Чему я научусь в уроке «let и изменяемость»?
Связывания и изменяемость Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn Rust Coding?
Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «let и изменяемость»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn Rust Coding?
Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- let и изменяемость
- Скалярные типы
- Составные типы
- Затенение