mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-23 00:08:01 +00:00
feat(codegen): Add #[serde(serialize_with="...")]
This allows a field to be serialized with an expression instead of the default serializer. This simplifies serializing a struct or enum that contains an external type that doesn't implement `serde::Serialize`. This expression is passed a variable `serializer` that needs to be used to serialize the expression.
This commit is contained in:
@@ -672,8 +672,13 @@ fn serialize_struct_visitor(
|
||||
}
|
||||
};
|
||||
|
||||
let field_expr = match field_attr.serialize_with() {
|
||||
Some(expr) => expr.clone(),
|
||||
None => quote_expr!(cx, &self.value.$name),
|
||||
};
|
||||
|
||||
let expr = quote_expr!(cx,
|
||||
serializer.$serializer_method($key_expr, &self.value.$name)
|
||||
serializer.$serializer_method($key_expr, $field_expr)
|
||||
);
|
||||
|
||||
quote_arm!(cx,
|
||||
|
||||
Reference in New Issue
Block a user