maybe-uninit

MaybeUninit for friends of backwards compatibility

Latest version: 2.0.0 registry icon
Maintenance score
0
Safety score
0
Popularity score
70
Check your open source dependency risks. Get immediate insight about security, stability and licensing risks.
Security
  Vulnerabilities
Version Suggest Low Medium High Critical
2.0.0 0 0 0 0 0
1.0.0 0 0 0 0 0

Stability
Latest release:

2.0.0 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform

Licensing

Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.

Apache-2.0   -   Apache License 2.0

Not a wildcard

Not proprietary

OSI Compliant


MIT   -   MIT License

Not a wildcard

Not proprietary

OSI Compliant



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 Droping 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.