MaybeUninit is a wrapper type that not guarantee that the bits that make up the t actually make a valid T

    assume_init(self) -> T
    extracts the value from the MaybeUninit, container. when you call this method, you tell the compiler the bit of the T is valid.

    ManuallyDrop is a wrapper that disable drop