Clone
ときには、値のコピーを 作りたくなる ことがあります。Clone トレイトはこれを実現します。
// Copyright 2023 Google LLC // SPDX-License-Identifier: Apache-2.0 fn say_hello(name: String) { println!("Hello {name}") } fn main() { let name = String::from("Alice"); say_hello(name.clone()); say_hello(name); }
-
Cloneの考え方は、ヒープ割り当てがどこで発生しているかを見つけやすくすることです。.clone()や、vec!、Box::newのようなものを探してください。 -
借用チェッカーの問題を clone で切り抜け、あとで戻ってきてそれらの clone を取り除くよう最適化を試みる、というのはよくあることです。
-
一般に
cloneは値のディープコピーを行います。つまり、たとえば配列を clone すると、その配列のすべての要素も同様に clone されます。 -
cloneの挙動はユーザー定義なので、必要であればカスタムのクローンロジックを実行できます。