#[ast_serde]
Available on crate features
__ecma
and __utils
only.Expand description
Derives serde::Serialize
and serde::Deserialize
.
§Struct attributes
#[ast_serde("A")]
adds "type": "A"
to json when serialized, and
deserializes as the type only if type
field of json string is A
.
§Enum attributes
§Type-level attributes
This macro does not accept arguments if used on enum.
§Variant attributes
§#[tag("Expr")]
You can tell “Use this variant if type
is Expr
”.
This attribute can be applied multiple time, if a variant consumes multiple
type
s.
For example, Lit
of swc_ecma_ast is an enum, but Expr
, which contains
Lit
as a variant, is also an enum.
So the Lit
variant has multiple #[tag]
-s like
ⓘ
enum Expr {
#[tag("StringLiteral")]
#[tag("NumericLiteral")]
#[tag("BooleanLiteral")]
Lit(Lit),
}
so the deserializer can decide which variant to use.
#[tag]
also supports wildcard like #[tag("*")]
. You can use this if
there are two many variants.