3 use std
::raw
::TraitObject
;
5 #[allow(missing_docs)] // Bogus warning (it’s not public outside the crate), ☹
6 pub trait UncheckedAnyExt
{
7 unsafe fn downcast_ref_unchecked
<T
: '
static>(&self) -> &T
;
8 unsafe fn downcast_mut_unchecked
<T
: '
static>(&mut self) -> &mut T
;
9 unsafe fn downcast_unchecked
<T
: '
static>(self: Box
<Self>) -> Box
<T
>;
12 impl UncheckedAnyExt
for Any
{
13 unsafe fn downcast_ref_unchecked
<T
: '
static>(&self) -> &T
{
14 mem
::transmute(mem
::transmute
::<_
, TraitObject
>(self).data
)
17 unsafe fn downcast_mut_unchecked
<T
: '
static>(&mut self) -> &mut T
{
18 mem
::transmute(mem
::transmute
::<_
, TraitObject
>(self).data
)
21 unsafe fn downcast_unchecked
<T
: '
static>(self: Box
<Any
>) -> Box
<T
> {
22 mem
::transmute(mem
::transmute
::<_
, TraitObject
>(self).data
)