Розглянемо деякі розумні покажчики, які ми вже бачили, такі як Vec<T>
та String
.
Vec<T>
- це розумний покажчик, який просто володіє деякою областю пам'яті у байтах. Компілятор Rust не має жодного уявлення про те, що
знаходиться у цих байтах. Розумний вказівник інтерпретує, тобто захоплює елементи з області пам'яті, якою він керує,
відстежує, де починаються і де закінчуються структури даних у цих байтах, і потім нарешті розіменовує необроблений вказівник
на структури даних з гарним чистим і лаконічним інтерфейсом, якими ми можемо користуватися (наприклад, my_vec[3]
).
Аналогічно, String
відстежує область пам'яті у байтах, і програмно обмежує вміст, що записується до неї, щоб завжди
бути коректною у кодуванні utf-8
і допомагає розіменовувати цю ділянку пам'яті до типу &str
.
Обидві ці структури даних використовують небезпечне розіменування необроблених вказівників для виконання вказівників для виконання своєї роботи.
Подробиці про роботу з пам'ятю: