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

cloneable_dyn

宏用于使结构体和枚举可克隆,这些结构体和枚举使用 dyn 对象

2 个版本

0.1.1 2023 年 8 月 2 日
0.1.0 2023 年 7 月 31 日

#1066 in 进程宏

MIT/Apache

12KB
202

免责声明

我对 Rust 很是新手,对发布 Crates 更加陌生,因此这个 Crates 应谨慎使用,欢迎反馈 :-)

cloneable_dyn

使用这个 Crates,您可以使您的 trait 可克隆,您的结构体/枚举根据给定的可克隆 trait 可克隆,并从您的 trait 的 dyn 对象中派生出结构体/枚举的 clone。通过附加属性 #[dyn_cloneable] 使 trait 可克隆。这将生成一个包含函数 fn clone_dyn(&self) -> Box<dyn #trait_ident> 的超trait。这里有一个例子

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:

免责声明

我对 Rust 很是新手,对发布 Crates 更加陌生,因此这个 Crates 应谨慎使用,欢迎反馈 :-)

cloneable_dyn

使用这个 Crates,您可以使您的 trait 可克隆,您的结构体/枚举根据给定的可克隆 trait 可克隆,并从您的 trait 的 dyn 对象中派生出结构体/枚举的 clone。

通过附加属性 #[dyn_cloneable] 使 trait 可克隆。这将生成一个包含函数 fn clone_dyn(&self) -> Box<dyn #trait_ident> 的超trait。这里有一个例子

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

依赖项

~260–700KB
~17K SLoC