我正在Rust中编写VM,并且具有C和C ++背景。我需要类似工会的功能,因为在VM堆栈上,我可以存储int
或float
。
在C语言中我有一个联合:
union stack_record_t {
int i;
float f;
};
我可以将记录用作int
或float
,且运行时开销为零。我有一个静态字节码分析器,它将在字节码执行之前发现类型错误,因此我不必在记录旁边存储标志。
我不知道在Rust中使用联合是不是一个好主意,因为它们是不安全的。在Rust中,有没有安全的方法可以做到这一点-而且成本也为零? 我应该只使用不安全的Rust联合吗?