Expand description
§::maybe-dangling
ManuallyDrop<T> and MaybeDangling<T> semantics in stable Rust as per https://github.com/rust-lang/rfcs/pull/3336
This crates offers two types, ManuallyDrop<T>, and MaybeDangling<T>, which do not carry
aliasing/dereferenceable-ity properties w.r.t. the
T they each contain, which means they are allowed to:
- have some expired value inside of them, such as
T = &'expired …, - be fed to a function that does not inspect its value (such as
::core::mem::forget()), - exhibit well-defined behavior (no UB!).
§References
-
The RFC that shall eventually and ultimately supersede this very crate: https://github.com/rust-lang/rfcs/pull/3336
-
The
miriPR implementing the check against this: https://github.com/rust-lang/miri/pull/2985 -
The soundness problem of
::ouroborosstemming from not using this: https://github.com/joshua-maros/ouroboros/issues/88 -
The soundness problem of
::yokestemming from not using this: https://github.com/unicode-org/icu4x/issues/3696 -
An URLO thread on the topic, and a post exposing the intention to write this very crate
Macros§
- drop_
in_ place - Safe API around
MaybeDangling::drop_in_place(), which performs the mandatory::core::mem::forget()on the given var.
Structs§
- Maybe
Dangling - Like
crate::ManuallyDropbut for havingdropglue. This wrapper is 0-cost.
Type Aliases§
- Manually
Drop Deprecated - Ever since Rust 1.96.0, and this library’s version
0.1.3…,ManuallyDropis a mere re-export of::core::mem::ManuallyDrop, as the latter has started featuring the desiredcrate::MaybeDanglingsemantics inside of it.