Clone trait that is object-safe
This crate provides a Clone
trait that can be used in trait objects, and a
clone_box
function that can clone any sized or dynamically sized
implementation of Clone
. Types that implement the standard library's
std::clone::Clone
trait are automatically usable this way.
The signature of clone_box
is:
fn clone_box<T>(t: &T) -> Box<T>
where
T: ?Sized + objekt::Clone
Example
extern crate objekt;
trait MyTrait: objekt::Clone {
fn recite(&self);
}
impl MyTrait for String {
fn recite(&self) {
println!("{} ♫", self);
}
}
fn main() {
let line = "The slithy structs did gyre and gimble the namespace";
let x: Box<MyTrait> = Box::new(String::from(line));
x.recite();
let x2 = objekt::clone_box(&*x);
x2.recite();
}
License