如何解决如何在Rust中拆分枚举变量及其内容以生成正确的JSON模式
使用schemars,可以从Rust代码生成JSON模式。
考虑以下JSON示例:
use schemar::JsonSchema;
use serde::Serialize;
#[derive(Serialize,JsonSchema)]
struct Cause {
_type: EventType,payload: EventPayload,}
#[derive(Serialize,JsonSchema)]
enum EventType {
EVT1 { param1: String,param2: String },EVT2 { param1: String },JsonSchema)]
enum EventPayload {
// ?
}
以及用于生成模式的Rust代码:
EventType
EventType
在变量名称中包含事件的类型,有效负载也由EventPayload
指定。 EventType
是多余的。
是否有可能配置Serde,以便将type
变体的名称用作payload
,将其内容用作payload
? EventType
取决于_type
。
我期望什么?
-
EventType
仅限于payload
的变体
-
cause
的{{1}}直接依赖于_type
- 理想情况下,模式生成会将
EventType
变体的名称用作_type
,并从变体内容中获取payload
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。