Clone
型をディープコピーするか、共有可能なスマートポインタを複製します。
derive 可能: ✅
// 著作権 2025 Google LLC // SPDX-License-Identifier: Apache-2.0 use std::collections::BTreeSet; use std::rc::Rc; #[derive(Clone)] pub struct LotsOfData { string: String, vec: Vec<u8>, set: BTreeSet<u8>, } fn main() { let lots_of_data = LotsOfData { string: "String".to_string(), vec: vec![1; 255], set: BTreeSet::from_iter([1, 2, 3, 4, 5, 6, 7, 8]), }; // `lots_of_data` 内のすべてのデータをディープコピーする。 let lots_of_data_cloned = lots_of_data.clone(); let reference_counted = Rc::new(lots_of_data); // 値ではなく、参照カウント付きポインタをコピーする。 let reference_copied = reference_counted.clone(); }
-
値を「ディープコピー」するか、
Rc/Arcのような参照カウント付き ポインタの場合は、そのポインタの新しいインスタンスを作成します。 -
実装/derive しないべき場合: 不変条件を維持するために、その 値は複製されるべきではない型です。これについては、Idiomatic Rust の後の方で触れます。