dyn_derive 0.3.4

Inherit and derive object-unsafe traits for dynamic Rust.
Documentation
use std::fmt::Debug;

use dyn_derive::*;

#[dyn_trait]
pub trait Meta: Debug + PartialEq {}

#[derive(Debug, PartialEq)]
pub struct MetaImpl1(i32);

impl Meta for MetaImpl1 {}

#[derive(Debug, PartialEq)]
pub struct MetaImpl2(i32);

impl Meta for MetaImpl2 {}

#[derive(Debug, PartialEq)]
pub struct Foo {
    meta: Box<dyn Meta>,
}

#[test]
fn main() {
    let foo1 = Foo { meta: Box::new(MetaImpl1(114)) };
    let foo2 = Foo { meta: Box::new(MetaImpl1(114)) };
    let foo3 = Foo { meta: Box::new(MetaImpl1(514)) };
    let foo4 = Foo { meta: Box::new(MetaImpl2(114)) };
    assert_eq!(foo1, foo2);
    assert_ne!(foo1, foo3);
    assert_ne!(foo1, foo4);
}