Я пишу виртуальную машину на Rust, и у меня есть C и C ++ фон. Мне нужна функциональность типа объединения, потому что в стеке виртуальных машин я могу хранить int
или float
.
В C у меня было объединение:
union stack_record_t {
int i;
float f;
};
Я могу использовать запись как int
или как float
с нулевыми накладными расходами времени выполнения. У меня есть анализатор байт-кода stati c, который обнаружит ошибки типа до выполнения байт-кода, поэтому мне не нужно хранить флаг рядом с записью.
Я не знаю, хорошая ли это идея использовать союзы в Rust, потому что они небезопасны. Есть ли безопасный способ сделать это в Rust - также с нулевой стоимостью? Должен ли я просто использовать небезопасные союзы Rust?