Помилки запозичення
Як конкретний приклад того, як ці правила запозичення запобігають помилкам пам'яті, розглянемо випадок модифікації колекції, коли на її елементи є посилання:
fn main() { let mut vec = vec![1, 2, 3, 4, 5]; let elem = &vec[2]; vec.push(6); println!("{elem}"); }
Аналогічно, розглянемо випадок оголошення ітератора недійсним:
fn main() { let mut vec = vec![1, 2, 3, 4, 5]; for elem in &vec { vec.push(elem * 2); } }
This slide should take about 3 minutes.
- В обох випадках модифікація колекції шляхом додавання до неї нових елементів може потенційно зробити недійсними наявні посилання на елементи колекції, якщо колекція буде перерозподілена.