more into_* methods
This commit is contained in:
parent
e0cd965f33
commit
f95e78f5ad
11
src/lib.rs
11
src/lib.rs
|
|
@ -31,15 +31,24 @@ impl<T: ?Sized> OwnRef<'_, T> {
|
||||||
pub unsafe fn new_unchecked(p: NonNull<T>) -> Self {
|
pub unsafe fn new_unchecked(p: NonNull<T>) -> Self {
|
||||||
Self(Some(p), PhantomData)
|
Self(Some(p), PhantomData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn into_inner(mut self) -> NonNull<T> {
|
||||||
|
self.0.take().unwrap()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T: ?Sized> OwnRef<'a, T> {
|
impl<'a, T: ?Sized> OwnRef<'a, T> {
|
||||||
pub unsafe fn from_manually_drop(p: &'a mut ManuallyDrop<T>) -> Self {
|
pub unsafe fn from_manually_drop(p: &'a mut ManuallyDrop<T>) -> Self {
|
||||||
unsafe { Self::new_unchecked(p.deref_mut().into()) }
|
unsafe { Self::new_unchecked(p.deref_mut().into()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn into_manually_drop(self) -> &'a mut ManuallyDrop<T> {
|
||||||
|
let p = self.into_inner().as_ptr() as *mut ManuallyDrop<T>;
|
||||||
|
unsafe { p.as_mut().unwrap() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Sized> OwnRef<'_, T> {
|
impl<T> OwnRef<'_, T> {
|
||||||
pub fn take(mut self) -> T {
|
pub fn take(mut self) -> T {
|
||||||
let p = self.0.take().unwrap();
|
let p = self.0.take().unwrap();
|
||||||
unsafe { p.read() }
|
unsafe { p.read() }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user