Clone
Іноді вам необхідно зробити копію значення. Для цього призначений крейт Clone
.
fn say_hello(name: String) { println!("Привіт {name}") } fn main() { let name = String::from("Alice"); say_hello(name.clone()); say_hello(name); }
This slide should take about 2 minutes.
-
Ідея
Clone
полягає у тому, щоб полегшити виявлення місць, де відбувається виділення пам'яті у купі. Шукайте.clone()
та деякі інші, такі якvec!
абоBox::new
. -
Зазвичай, ви "клонуєте свій вихід" з проблем з перевіркою позик, а потім повертаєтесь пізніше, щоб спробувати оптимізувати ці клони.
-
clone
зазвичай виконує глибоку копію значення, тобто якщо ви, наприклад, клонуєте масив, то всі елементи масиву також будуть клоновані. -
Поведінка функції
clone
визначається користувачем, тому вона може виконувати власну логіку клонування, якщо це необхідно.