Добавить объявление

Продолжаю разбираться с владением в Rust

Продолжаю разбираться с владением в Rust и дошел до статьи про ссылки и заимствование.

Чтобы не передавать владение каждый раз, можно использовать ссылки. Ссылки объявляются в Rust с помощью символа &, что по синтаксису схоже с передачей inout параметров функций в Swift. Но в отличие от Swift, в Rust данные по ссылке изменять нельзя, если не добавить ключевое слово mut. В итоге, чтобы данные по ссылке можно было изменять, ссылка объявляется как &mut

Пример:

let name = String::from("Artem");
let ref_to_name = &name; // Заимствуем

println!("{}", name); // Ok: Artem
println!("{}", ref_to_name); // Ok: Artem

...

let mut age = 30;
println!("{}", age); // Ok: 30

let mutable_ref = &mut age;
mutable_ref = 33;

println!("{}", age); // Ok: 33

Но есть важное правило: в одной области видимости может существовать только одна изменяемая ссылка на одни и те же данные и никаких других ссылок (даже тех, которые не позволяют изменять данные).

Интересное решение, благодаря которому не возникнет гонки данных, ведь проверка идет во время компиляции программы, хоть к такой работе с ссылками и придется долго привыкать.
11.10.2025 13 156