EDIT: I see you’ve actually done this at the top of your code. It’s not clear to me what you’re trying to achieve, then.
Your enum will have a different memory layout than the structs in the variants, due to the discriminator, so I don’t think you can convert between them without either cloning or something something hideously unsafe. If you want a guarantee that a field is of that variant, why not just use that inner type?
I've got a struct that I want to accept only one variant of an enum. I think the code in the link accomplishes that albeit with some superfluous code still there from when I was working through things.