Trait Uninit

Source
pub unsafe trait Uninit: Sized { }
Expand description

Types that may be constructed in an uninitialized state.

§Safety

It must be safe to construct the type in an uninitialized state. This is true if your type only contains:

Note that the type must be inhabited. Implementing this trait for uninhabited types such as ! and enum {} would cause undefined behavior upon creation.

Furthermore, care should be taken to not implement this trait for types that have creation invariants. GhostToken from GhostCell, for example, while being a zero-sized type, is unsound to create from nothing.

If this invariant is not upheld, undefined behavior is likely to occur.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Uninit for ()

Source§

impl Uninit for PhantomPinned

Source§

impl<A> Uninit for (A,)
where A: Uninit,

Source§

impl<A, B> Uninit for (A, B)
where A: Uninit, B: Uninit,

Source§

impl<A, B, C> Uninit for (A, B, C)
where A: Uninit, B: Uninit, C: Uninit,

Source§

impl<A, B, C, D> Uninit for (A, B, C, D)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit,

Source§

impl<A, B, C, D, E> Uninit for (A, B, C, D, E)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit,

Source§

impl<A, B, C, D, E, F> Uninit for (A, B, C, D, E, F)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit, F: Uninit,

Source§

impl<A, B, C, D, E, F, G> Uninit for (A, B, C, D, E, F, G)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit, F: Uninit, G: Uninit,

Source§

impl<A, B, C, D, E, F, G, H> Uninit for (A, B, C, D, E, F, G, H)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit, F: Uninit, G: Uninit, H: Uninit,

Source§

impl<A, B, C, D, E, F, G, H, I> Uninit for (A, B, C, D, E, F, G, H, I)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit, F: Uninit, G: Uninit, H: Uninit, I: Uninit,

Source§

impl<A, B, C, D, E, F, G, H, I, J> Uninit for (A, B, C, D, E, F, G, H, I, J)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit, F: Uninit, G: Uninit, H: Uninit, I: Uninit, J: Uninit,

Source§

impl<A, B, C, D, E, F, G, H, I, J, K> Uninit for (A, B, C, D, E, F, G, H, I, J, K)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit, F: Uninit, G: Uninit, H: Uninit, I: Uninit, J: Uninit, K: Uninit,

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> Uninit for (A, B, C, D, E, F, G, H, I, J, K, L)
where A: Uninit, B: Uninit, C: Uninit, D: Uninit, E: Uninit, F: Uninit, G: Uninit, H: Uninit, I: Uninit, J: Uninit, K: Uninit, L: Uninit,

Source§

impl<T> Uninit for Cell<T>
where T: Uninit,

Source§

impl<T> Uninit for UnsafeCell<T>
where T: Uninit,

Source§

impl<T> Uninit for PhantomData<T>
where T: ?Sized,

Source§

impl<T> Uninit for ManuallyDrop<T>
where T: Uninit,

Source§

impl<T> Uninit for MaybeUninit<T>

Source§

impl<T, const N: usize> Uninit for [T; N]
where T: Uninit,

Implementors§