I sat down with someone familiar with this sort of problem in C++ (though not a Rust person) and after staring at a couple of examples we’ve concluded we’ve been thinking about this the wrong way this whole time. It sounds like this isn’t a solution for the problem I set out to solve, specifically because of your points about ptr::read. I’m not sure that I buy the optimization worry in the examples I’m thinking of, so I wonder if this is still a useful change… I expect I need to look at compiler output to make a more educated guess.
All that said, the documentation should be a bit more clear as to how dangerous this method is, and maybe get rid of some of the sillier examples.
I doubt there is a good solution to the problem I want to solve, unfortunately.