Repository navigation
Use ManuallyDrop #62
Description
Activity
Consider using version_check which is small enough to be worth it(?)
This can only get the version at runtime – do you want to add a build script?
Yep, exactly.
Example https://github.com/bluss/debugit/blob/master/build.rs (this one is checking nightly and not the version..)
We can handle this without breaks, as long as the minimum rust version is reasonable (not 1.2).
However, the question of uninit data inside manuallydrop is unresolved, so we can't really start to use it without including other workarounds too.
Looks like f33c4e4 snuck in ManuallyDrop if the
use_unionfeature is set 🎉Is there anything left to do, besides version detection, before it can entirely replace nodrop?
sigh, that was not intended :(
It's fine to use ManuallyDrop for use_union. What remains for arrayvec 1.0 is to answer the question about uninitialized data in ManuallyDrop. There was some disagreement in #rustc.
Thanks for pointing out that it snuck in, by the way. It was obviously not intended to sneak in.
Can you link to the discussion about uninit data in
ManuallyDrop?The discussion is here: https://botbot.me/mozilla/rustc/2017-08-24/?msg=90238011&page=3
There are different opinions. I don't think specific people are wrong here, but my collected impression was that there is no consensus on the safety of uninitialized in ManuallyDrop
Your idea of making a union
union MaybeInitialized<T>{ t: T, uninit: () }sounds good and forward-compatible if theO(n)cost gets optimized out by the compiler.Current wip is #76
Closed in favour of #118
ManuallyDrop is stable in Rust 1.20 (not yet released).
This is the official nodrop that arrayvec has been waiting a long time for; it's likely that we will use Rust 1.20 as the new required version from this point.