字段属性¶
要忽略某个字段或变体(variant),可使用 #[serde(skip)] 进行标注。这在传递部分私有数据时很有用,因为它允许您指定哪些数据暴露给 Dart。有关 Serde 如何处理此属性的更多信息,请参阅 Serde 关于变体(variant)和字段属性的文档。
Rust¶
#[derive(Serialize, RustSignal)]
struct UpdateMessage {
event: String,
struct_data: StructData,
enum_data: EnumData,
}
#[derive(Serialize, SignalPiece)]
struct StructData {
my_public_field: bool,
#[serde(skip)]
my_private_field: bool,
}
#[derive(Serialize, SignalPiece)]
enum EnumData {
Variant1(i32, #[serde(skip)] i32),
Variant2 {
my_public_field: bool,
#[serde(skip)]
my_private_field: bool,
},
}
Serde 的某些属性在编译时是被禁止使用的。这是因为 rinf gen 通过读取类型注解来静态分析 Rust 代码,而它无法推断 #[serde(with = "...")] 等特殊 Serde 属性背后的类型。这种机制确保了 rinf gen 始终能从 Rust 结构体生成完全对应的 Dart 代码。