2个版本
0.1.1 | 2023年1月8日 |
---|---|
0.1.0 | 2023年1月3日 |
#1375 in 过程宏
7KB
58 行
clone_into_derive
此crate通过CloneInto
过程宏生成克隆宏,用于结构体。如果您想要将一个结构体完整地复制到另一个结构体中,或者使用结构体初始化另一个结构体,这将非常方便。
CloneInto
过程宏生成一个宏,用于克隆结构体中的所有公共字段。宏的名称来自结构体的名称。例如,如果结构体名称是AaaBbb
,则宏名称变为aaa_bbb_clone_into!
。
#[derive(CloneInto)]
pub struct AaaBbb {
pub a: i32,
pub b: i32,
}
此代码生成aaa_bbb_clone_into!
宏。下面是aaa_bbb_clone_into!(aaabbb, ccc)
的展开示例。
ccc.a = aaabbb.a.clone();
ccc.b = aaabbb.b.clone();
aaa_bbb_ccc_clone!(aaabbb,Ccc{c: 4})
的展开如下。
Ccc {
a: aaabbb.a.clone(),
b: aaabbb.b.clone(),
c: 4
}
您可以在Ccc
的位置指定结构体名称。但有一个限制。现在,您不能使用路径指定结构体名称,所以您只能指定结构体名称。这看起来像是macro_rules
的bug。当我使用ty
解析器时,宏展开结果变成了一个错误。
示例在tests目录中。
依赖
~3.5–4.5MB
~88K SLoC