The main data structure for &#x2F;dev&#x2F;kvm is `struct kvm_run`, which includes a massive union.  There are also unions spread out across the rest of the API; half the structures in the API have some kind of union in them.  It would be <i>possible</i> to make that work using unsafe operations like `std::mem::transmute` and careful manual pointer offsets, but that would eliminate much of the benefit of doing this in Rust in the first place.