spellcast 0.1.2

Casting of dynamic objects
Documentation
use std::{any::Any, marker::Unsize};

pub trait AsAny: Any + Unsize<dyn Any>
{
    fn as_any<'a>(self: &'a Self) -> &'a dyn Any
    {
        self
    }
    fn as_any_mut<'a>(self: &'a mut Self) -> &'a mut dyn Any
    {
        self
    }
    fn into_any(self: Box<Self>) -> Box<dyn Any>
    {
        self
    }
}

impl<T> AsAny for T
where T: Any + Unsize<dyn Any> + ?Sized {}