#cloneable #dyn #dynamic #traits #object #clonable #dyn-cloneable

macro cloneable_dyn

Macros to make structs and enums clonable that use dyn Objects

2 releases

0.1.1 Aug 2, 2023
0.1.0 Jul 31, 2023

#1066 in Procedural macros

MIT/Apache

12KB
202 lines

Disclaimer

I'm quite new to rust and even more so to publishing crates so this crate should be used with caution and feedback is welcome :-)

cloneable_dyn

With this crate you can make your traits cloneablr, your structs/enums cloneable as given cloneable traits and derive clone on structs/enums that contain dyn objects of your traits. Make a trait cloneable by attaching the attribute #[dyn_cloneable]. This will generate a new supertrait that contains a function fn clone_dyn(&self) -> Box<dyn #trait_ident> Here an Example:

use cloneable_dyn::dyn_cloneable;
#[dyn_cloneable]
trait TestTrait {}
// will generate
// pub trait __TestTrait__DynCloneAutoDerive__ {
//    fn clone_dyn(&self) -> Box<dyn TestTrait>;
// }
// and make it a supertrait of TestTrait

lib.rs:

Disclaimer

I'm quite new to rust and even more so to publishing crates so this crate should be used with caution and feedback is welcome :-)

cloneable_dyn

With this crate you can make your traits cloneablr, your structs/enums cloneable as given cloneable traits and derive clone on structs/enums that contain dyn objects of your traits.

Make a trait cloneable by attaching the attribute #[dyn_cloneable]. This will generate a new supertrait that contains a function fn clone_dyn(&self) -> Box<dyn #trait_ident> Here an Example:

use cloneable_dyn::dyn_cloneable;
#[dyn_cloneable]
trait TestTrait {}

// will generate
// pub trait __TestTrait__DynCloneAutoDerive__ {
//    fn clone_dyn(&self) -> Box<dyn TestTrait>;
// }
// and make it a supertrait of TestTrait

Dependencies

~260–700KB
~17K SLoC