// create a tagged union to represent the different types of data
#[derive(Debug, Clone)]pubstructTaggedType<T>{tag: Tag,
data:Data<T>,
}#[derive(Debug, Clone)]pubenumTag{
Directive,
Function,
Number,String,
Variable,}#[derive(Debug, Clone)]pubstructData<T>{data: T,
}