diff --git a/rustbook-ru/src/ch03-01-variables-and-mutability.md b/rustbook-ru/src/ch03-01-variables-and-mutability.md index 47c89e72c..b8b399599 100644 --- a/rustbook-ru/src/ch03-01-variables-and-mutability.md +++ b/rustbook-ru/src/ch03-01-variables-and-mutability.md @@ -1,6 +1,6 @@ ## Переменные и изменяемость -Как упоминалось в разделе ["Хранение значений с помощью переменных"], по умолчанию переменные неизменяемы. Это один из многих стимулов Rust, позволяющий писать код с использованием преимущества безопасности и удобной конкурентности (concurrency), предоставляемых Rust. Тем не менее, существует возможность сделать переменные изменяемыми. Давайте рассмотрим, как и почему Rust побуждает предпочесть неизменяемость и почему иногда можно отказаться от этого. +Как упоминалось в разделе ["Хранение значений с помощью переменных"](ch02-00-guessing-game-tutorial.html#%D0%A5%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85), по умолчанию переменные неизменяемы. Это один из многих стимулов Rust, позволяющий писать код с использованием преимущества безопасности и удобной конкурентности (concurrency), предоставляемых Rust. Тем не менее, существует возможность сделать переменные изменяемыми. Давайте рассмотрим, как и почему Rust побуждает предпочесть неизменяемость и почему иногда можно отказаться от этого. Если переменная является неизменяемой, то после привязки значения к имени изменить его будет нельзя. Чтобы показать это, создайте новый проект под названием *variables* в каталоге *projects* с помощью команды `cargo new variables`. @@ -29,7 +29,7 @@ error[E0384]: cannot assign twice to immutable variable `x` --> src/main.rs:4:5 Важно, чтобы при попытке изменить значение, объявленное неизменяемым, выдавались ошибки времени компиляции, так как подобная ситуация может привести к сбоям. Если одна часть нашего кода функционирует исходя из уверенности в неизменяемости значения, а другая часть изменяет это значение, то велика вероятность , что первая часть не выполнит своего предназначения. Причину такой ошибки бывает трудно отследить, особенно если вторая часть кода изменяет значение лишь *изредка*. Компилятор Rust предоставляет гарантию, что если объявить значение неизменяемым, то оно действительно не изменится, а значит, не нужно следить за этим самим. Таким образом, ваш код становится проще для понимания. -Однако изменяемость может быть очень полезной и может сделать код более удобным для написания. Хотя переменные по умолчанию неизменяемы, их можно сделать изменяемыми, добавив `mut` перед именем переменной, как это было сделано в [Главе 2](ch02-00-guessing-game-tutorial.html#storing-values-with-variables). Добавление `mut` также передаёт будущим читателям кода намерение, обозначая, что другие части кода будут изменять значение этой переменной. +Однако изменяемость может быть очень полезной и может сделать код более удобным для написания. Хотя переменные по умолчанию неизменяемы, их можно сделать изменяемыми, добавив `mut` перед именем переменной, как это было сделано в [Главе 2]. Добавление `mut` также передаёт будущим читателям кода намерение, обозначая, что другие части кода будут изменять значение этой переменной. Например, изменим *src/main.rs* на следующий код: @@ -109,5 +109,5 @@ const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3; [«Типы данных».]: ch03-02-data-types.html#data-types -["Хранение значений с помощью переменных"]: ch02-00-guessing-game-tutorial.html#storing-values-with-variables +[Главе 2]: ch02-00-guessing-game-tutorial.html#storing-values-with-variables [Раздел справки Rust по вычислениям констант]: ../reference/const_eval.html \ No newline at end of file