File: README.md

package info (click to toggle)
rust-maybe-uninit 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 140 kB
  • sloc: makefile: 4
file content (19 lines) | stat: -rw-r--r-- 996 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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: `MaybeUninit` implementation 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 `bool` or enums.
  However, there is protection from accidentially `Drop`ing e.g. during unwind!

* Rust 1.20.x - 1.21.x: No support for Copy/Clone of `MaybeUninit<T>`,
  even if `T` impls `Copy` or even `Clone`.