我有一个yaml,可以有各种各样的关键,这都是一种条件。
checks:
should_equal_to: 0
# or should_greater_than
# or should_less_than
# etc etc
我知道我可以很容易地加载这些与serde使用别名:
pub struct Check {
pub name: String,
pub sql: String,
pub abort_on_fail: Option<bool>,
#[serde(alias = "should_equal_to")]
#[serde(alias = "should_greater_than_or_equal_to")]
#[serde(alias = "should_less_than_or_equal_to")]
#[serde(alias = "should_greater_than")]
#[serde(alias = "should_less_than")]
#[serde(alias = "count_greater_than")]
#[serde(alias = "percent_min_threshold")]
#[serde(alias = "percent_max_threshold")]
#[serde(alias = "should_be_within_10")]
pub condition: Option<i32>,
}
这很好,但我希望在条件属于某种类型时实际采取行动。我认为枚举可能适用于此,但不完全确定如何让Serde告诉我原始别名是什么。
这可能吗?
1条答案
按热度按时间vltsax251#
您可以只使用
flatten
艾德枚举来代替别名: