Язык RUST: Основы и практика программирования - страница 7

Шрифт
Интервал



**Собственность**


В Rust, каждое значение имеет владельца, который отвечает за его создание и удаление. Это означает, что когда вы создаете значение, вы автоматически становитесь его владельцем. Собственность определяет, кто имеет право доступа и манипулирования значением.


Например, рассмотрим следующий код:


```rust


let s = String::from("Привет, мир!");


```


В этом примере, переменная `s` является владельцем строки "Привет, мир!". Это означает, что `s` имеет полный контроль над строкой и может ее изменять или удалять.


**Заимствование**


Заимствование – это механизм, который позволяет вам использовать значение без принятия собственности над ним. Когда вы заимствуете значение, вы получаете ссылку на него, но не становитесь его владельцем.


В Rust, существует два типа заимствований: неизменяемое заимствование (`&T`) и изменяемое заимствование (`&mut T`).


Неизменяемое заимствование позволяет вам читать значение, но не изменять его. Изменяемое заимствование позволяет вам изменять значение, но только если вы явно указали, что хотите изменить его.


Например, рассмотрим следующий код:


```rust


let s = String::from("Привет, мир!");


let len = calculate_length(&s);


```


В этом примере, функция `calculate_length` заимствует строку `s` неизменяемым образом. Это означает, что функция может читать строку, но не может ее изменять.


**Правила собственности и заимствования**


В Rust, существуют три основных правила собственности и заимствования: