Skip to main content

design/
mem.rs

1use std::mem::MaybeUninit;
2
3use crate::{
4    ops::place::{
5        PlaceWrapper,
6        WrapPlace,
7    },
8    place::{
9        Subplace,
10        TransmutedSubplace,
11    },
12};
13
14impl<T> PlaceWrapper for MaybeUninit<T> {
15    type Inner = T;
16}
17
18unsafe impl<S> WrapPlace<S> for MaybeUninit<S::Source>
19where
20    S: Subplace,
21    S::Source: Sized,
22    S::Target: Sized,
23{
24    type Wrapped =
25        TransmutedSubplace<S, MaybeUninit<S::Source>, MaybeUninit<S::Target>>;
26
27    fn wrap(subplace: S) -> Self::Wrapped {
28        unsafe { TransmutedSubplace::new_unchecked(subplace) }
29    }
30}