Expand description
The Clone
trait for types that cannot be ‘implicitly copied’.
In Rust, some simple types are “implicitly copyable” and when you
assign them or pass them as arguments, the receiver will get a copy,
leaving the original value in place. These types do not require
allocation to copy and do not have finalizers (i.e., they do not
contain owned boxes or implement Drop
), so the compiler considers
them cheap and safe to copy. For other types copies must be made
explicitly, by convention implementing the Clone
trait and calling
the clone
method.
Basic usage example:
let s = String::new(); // String type implements Clone
let copy = s.clone(); // so we can clone it
To easily implement the Clone trait, you can also use
#[derive(Clone)]
. Example:
#[derive(Clone)] // we add the Clone trait to Morpheus struct
struct Morpheus {
blue_pill: f32,
red_pill: i64,
}
fn main() {
let f = Morpheus { blue_pill: 0.0, red_pill: 0 };
let copy = f.clone(); // and now we can clone it!
}
Traits
- A common trait for the ability to explicitly duplicate an object.
Derive Macros
- Derive macro generating an impl of the trait
Clone
.