dyn_derive 0.3.4

Inherit and derive object-unsafe traits for dynamic Rust.
Documentation
trait Meta<T>: ::dyn_std::any::Dyn {
    fn method_1(&self, arg: &dyn Fn(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>);
    fn method_2(&self, arg: &mut dyn FnMut(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>);
    fn method_3(&self, arg: Box<dyn Fn(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>);
    fn method_4(&self, arg: Box<dyn FnMut(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>);
    fn method_5(
        &self,
        arg: Box<
            dyn FnMut(
                Box<dyn FnMut(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>,
            ) -> Box<dyn Meta<T>>,
        >,
    );
    fn method_6(
        &self,
        arg: Box<
            dyn FnOnce(
                Box<dyn Meta<T>>,
            ) -> Box<dyn FnOnce(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>,
        >,
    );
    fn method_7(
        &self,
        arg: Box<dyn FnOnce(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>,
    ) -> Box<dyn FnOnce(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>;
}
trait MetaFactory<T: 'static>: Sized + 'static {
    fn method_1(arg: &dyn Fn(Self) -> Self);
    fn method_2(arg: &mut dyn FnMut(Self) -> Self);
    fn method_3(arg: Box<dyn Fn(Self) -> Self>);
    fn method_4(arg: Box<dyn FnMut(Self) -> Self>);
    fn method_5(arg: Box<dyn FnMut(Box<dyn FnMut(Self) -> Self>) -> Self>);
    fn method_6(arg: Box<dyn FnOnce(Self) -> Box<dyn FnOnce(Self) -> Self>>);
    fn method_7(arg: Box<dyn FnOnce(Self) -> Self>) -> Box<dyn FnOnce(Self) -> Self>;
}
#[automatically_derived]
impl<T: 'static, Factory: MetaFactory<T>> Meta<T>
for ::dyn_std::Instance<Factory, (T,)> {
    #[inline]
    fn method_1(&self, a1: &dyn Fn(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>) {
        let a1 = &|b1| {
            let b1 = Box::new(::dyn_std::Instance::new(b1));
            Self::downcast(a1(b1))
        };
        Factory::method_1(a1)
    }
    #[inline]
    fn method_2(&self, a1: &mut dyn FnMut(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>) {
        let a1 = &mut |b1| {
            let b1 = Box::new(::dyn_std::Instance::new(b1));
            Self::downcast(a1(b1))
        };
        Factory::method_2(a1)
    }
    #[inline]
    fn method_3(&self, a1: Box<dyn Fn(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>) {
        let a1 = Box::new(move |b1| {
            let b1 = Box::new(::dyn_std::Instance::new(b1));
            Self::downcast(a1(b1))
        });
        Factory::method_3(a1)
    }
    #[inline]
    fn method_4(&self, a1: Box<dyn FnMut(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>) {
        let mut a1 = Box::new(move |b1| {
            let b1 = Box::new(::dyn_std::Instance::new(b1));
            Self::downcast(a1(b1))
        });
        Factory::method_4(a1)
    }
    #[inline]
    fn method_5(
        &self,
        a1: Box<
            dyn FnMut(
                Box<dyn FnMut(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>,
            ) -> Box<dyn Meta<T>>,
        >,
    ) {
        let mut a1 = Box::new(move |b1| {
            let mut b1 = Box::new(move |c1| {
                let c1 = Self::downcast(c1);
                Box::new(::dyn_std::Instance::new(b1(c1)))
            });
            Self::downcast(a1(b1))
        });
        Factory::method_5(a1)
    }
    #[inline]
    fn method_6(
        &self,
        a1: Box<
            dyn FnOnce(
                Box<dyn Meta<T>>,
            ) -> Box<dyn FnOnce(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>,
        >,
    ) {
        let a1 = Box::new(move |b1| {
            let b1 = Box::new(::dyn_std::Instance::new(b1));
            Box::new(move |c1| {
                let c1 = Box::new(::dyn_std::Instance::new(c1));
                Self::downcast(a1(b1)(c1))
            })
        });
        Factory::method_6(a1)
    }
    #[inline]
    fn method_7(
        &self,
        a1: Box<dyn FnOnce(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>>,
    ) -> Box<dyn FnOnce(Box<dyn Meta<T>>) -> Box<dyn Meta<T>>> {
        let a1 = Box::new(move |b1| {
            let b1 = Box::new(::dyn_std::Instance::new(b1));
            Self::downcast(a1(b1))
        });
        Box::new(move |b1| {
            let b1 = Self::downcast(b1);
            Box::new(::dyn_std::Instance::new(Factory::method_7(a1)(b1)))
        })
    }
}