7个不稳定版本 (3个破坏性更改)
| 0.4.0 | 2019年10月8日 |
|---|---|
| 0.3.0 | 2019年8月4日 |
| 0.2.0 | 2019年7月28日 |
| 0.1.3 | 2019年7月28日 |
#7 in #glitch
13KB
207 行
glitchup_derive
一组进程宏,用于辅助使用glitchup。检查变更日志中的任何更新。
#[derive(MutConfig)]
此派生宏用于为任何兼容的结构体派生MutConfig。为了使结构体兼容,必须满足以下条件
- 结构体的名称必须包含
Config。 - 结构体的字段必须是以下类型
- 原语
isizeStringbool
- 泛型
Vec<{支持的类型(incl.泛型)}>Option<{支持的类型(incl.泛型)}>
- 原语
选择这些特定原语是因为MutOptionVal使用了这些值。
MutConfig特质实现了一个to_hashmap函数,其中结构体的字段被转换为用于Mutation的HashMap<String, MutOptionVal>。
#[derive(Debug, Deserialize, MutConfig)]
struct MainConfig {
mutation : MutationConfig,
mutations : Vec<Vec<String>> // works!
mapint : Vec<Vec<u8>> // fails!
}
#[derive(Debug, Deserialize, MutConfig)]
struct MutationConfig {
min : Option<isize>,
max : Option<isize>,
chunksize : isize,
}
在上面的MainConfig中,mapint将失败,因为它使用不兼容的类型u8。但是,我们需要它才能让我们的应用程序工作。让我们假设没有Mutation会使用它。因此,我们可以添加#[ignore]属性
#[derive(Debug, Deserialize, MutConfig)]
struct MainConfig {
mutation : MutationConfig,
mutations : Vec<Vec<String>> // works!
#[ignore]
mapint : Vec<Vec<u8>> // all ok now!
}
...
被标记为#[ignore]的任何字段将不会包含在to_hashmap(...)中。
依赖项
~2MB
~45K SLoC