Attribute Macro swc_common::ast_serde

source ·
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


You can tell “Use this variant if type is Expr”.

This attribute can be applied multiple time, if a variant consumes multiple types.

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 {

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.