Можно ли реализовать композицию в Rust с помощью анонимных структур?

Я пишу на Rust компилятор, который описан в книге дракона на Java. Пока что написал только лексический анализатор. Там есть класс Token, у которого есть дети Word, Num, Real. В свою очередь у класса Word есть ребёнок Type, у которого есть ребёнок Array.

Каким образом у меня в данный момент это реализовано на Rust:

pub struct TokenBase {
    tag: u32,
}

pub struct WordBase {
    token: TokenBase,
    lexeme: String,
}

// ...

pub enum Word {
    Word(WordBase),
    Type(TypeBase),
}

pub enum Token {
    Token(TokenBase),
    Word(Word),
    //...
}

В Rust ассоциированное значение варианта перечисления можно определить в виде анонимной структуры:

pub enum Token {
    Token {
        tag: u32,
    },
//...

но как тогда определять структуры для потомков ? И можно ли вообще это сделать ?


Ответы (1 шт):

Автор решения: Антон

Структуры для потомков (ассоциированных значений вариантов Word::Word, Word::Type) в таком случае определить не получится.

→ Ссылка