X-Git-Url: https://git.chrismorgan.info/anymap/blobdiff_plain/fdba2f45b9b9d6fa05be6a4d0849add42d94516e..7606e75aa4aac3580b1951fe68a18888dd0cae0e:/src/unchecked_any.rs diff --git a/src/unchecked_any.rs b/src/unchecked_any.rs deleted file mode 100644 index 52dee67..0000000 --- a/src/unchecked_any.rs +++ /dev/null @@ -1,34 +0,0 @@ -use raw::Any; -use std::mem; -#[cfg(feature = "nightly")] -use std::raw::TraitObject; - -#[cfg(not(feature = "nightly"))] -#[repr(C)] -#[allow(raw_pointer_derive)] -#[derive(Copy, Clone)] -struct TraitObject { - pub data: *mut (), - pub vtable: *mut (), -} - -#[allow(missing_docs)] // Bogus warning (it’s not public outside the crate), ☹ -pub trait UncheckedAnyExt { - unsafe fn downcast_ref_unchecked(&self) -> &T; - unsafe fn downcast_mut_unchecked(&mut self) -> &mut T; - unsafe fn downcast_unchecked(self: Box) -> Box; -} - -impl UncheckedAnyExt for Any { - unsafe fn downcast_ref_unchecked(&self) -> &T { - mem::transmute(mem::transmute::<_, TraitObject>(self).data) - } - - unsafe fn downcast_mut_unchecked(&mut self) -> &mut T { - mem::transmute(mem::transmute::<_, TraitObject>(self).data) - } - - unsafe fn downcast_unchecked(self: Box) -> Box { - mem::transmute(mem::transmute::<_, TraitObject>(self).data) - } -}