Можно ли реализовать композицию в 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) в таком случае определить не получится.