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 {
|
||||
Self(Some(p), PhantomData)
|
||||
}
|
||||
|
||||
pub fn into_inner(mut self) -> NonNull<T> {
|
||||
self.0.take().unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, T: ?Sized> OwnRef<'a, T> {
|
||||
pub unsafe fn from_manually_drop(p: &'a mut ManuallyDrop<T>) -> Self {
|
||||
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 {
|
||||
let p = self.0.take().unwrap();
|
||||
unsafe { p.read() }
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user