Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/est31/maybe-uninit
MaybeUninit for friends of backwards compatibility
https://github.com/est31/maybe-uninit
Last synced: 9 days ago
JSON representation
MaybeUninit for friends of backwards compatibility
- Host: GitHub
- URL: https://github.com/est31/maybe-uninit
- Owner: est31
- License: apache-2.0
- Created: 2019-07-09T02:50:07.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-07-10T13:42:06.000Z (over 5 years ago)
- Last Synced: 2024-04-26T16:21:46.071Z (6 months ago)
- Language: Rust
- Size: 37.1 KB
- Stars: 8
- Watchers: 1
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# 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`,
even if `T` impls `Copy` or even `Clone`.