Перевірка запозичення
Перевірка запозичень у Rust’і накладає обмеження на способи, якими ви можете запозичувати значення. Для певного значення, у будь-який час:
- Ви можете мати одне або декілька спільних посилань на значення, або
 - Ви можете мати лише одне ексклюзивне посилання на значення.
 
fn main() { let mut a: i32 = 10; let b: &i32 = &a; { let c: &mut i32 = &mut a; *c = 20; } println!("a: {a}"); println!("b: {b}"); }
This slide should take about 10 minutes. 
                    - Зверніть увагу, що вимога полягає в тому, що конфліктуючі посилання не повинні існувати в тій самій момент часу. Не має значення, де посилання буде розіменовано.
 - Наведений вище код не компілюється, оскільки 
aзапозичено як мутабельну змінну (черезc) і як немутабельну (черезb) одночасно. - Перемістіть інструкцію 
println!дляbперед областю видимості, яка вводитьc, щоб забезпечити компіляцію коду. - Після цієї зміни компілятор розуміє, що 
bвикористовується тільки перед новим мутабельним запозиченнямaчерезc. Це функція перевірки запозичень під назвою “нелексичні терміни життя”. - Обмеження ексклюзивного посилання є досить сильним. Rust використовує його для запобігання гонці даних. Rust також покладається на це обмеження для оптимізації коду. Наприклад, значення за спільним посиланням можна безпечно кешувати у регістрі на весь час існування цього посилання.
 - Перевірку запозичень розроблено з урахуванням багатьох поширених шаблонів, таких як одночасне отримання ексклюзивних посилань на різні поля у структурі. Але бувають ситуації, коли вона не зовсім “розуміє що відбувається”, і це часто призводить до “боротьби з перевіряльником запозичень”.