| .. | ||
| src | ||
| tests | ||
| .cargo-checksum.json | ||
| build.rs | ||
| Cargo.toml | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
maybe-uninit
Quite often, uses of std::mem::uninitialized() end up in unsound code.
Therefore, the MaybeUninit union has been added to std::mem and std::mem::uninitialized() is being deprecated.
However, MaybeUninit has been added quite recently.
Sometimes you might want to support older versions of Rust as well.
Here is where maybe-uninit comes in: it supports stable Rust versions starting with 1.20.0.
Sadly, a feature-complete implementation of MaybeUninit is not possible on stable Rust.
Therefore, the library offers the guarantees of MaybeUninit in a staged fashion:
-
Rust 1.36.0 onward:
MaybeUninitimplementation of Rust stable is being re-exported -
Rust 1.22.x - 1.35.0: No panicing on uninhabited types, unsoundness when used with types like
boolor enums. However, there is protection from accidentiallyDroping e.g. during unwind! -
Rust 1.20.x - 1.21.x: No support for Copy/Clone of
MaybeUninit<T>, even ifTimplsCopyor evenClone.