rebound 0.4.4

Full runtime reflection for Rust, with lifetime safety
Documentation
use rebound::{rebound, Type, Value};

#[rebound]
enum TestEnum {
    A,
    B(i32),
    C { foo: f32 },
}

#[test]
fn test_is_variant_a() {
    let v = Value::from(TestEnum::A);
    if let Type::Enum(ty) = v.ty() {
        let variant = &ty.variants()[0];
        assert!(variant
            .is_variant(&v)
            .expect("Value wasn't of the right type"))
    } else {
        panic!("TestEnum wasn't reflected correctly")
    }
}

#[test]
fn test_is_variant_b() {
    let v = Value::from(TestEnum::B(1));
    if let Type::Enum(ty) = v.ty() {
        let variant = &ty.variants()[1];
        assert!(variant
            .is_variant(&v)
            .expect("Value wasn't of the right type"))
    } else {
        panic!("TestEnum wasn't reflected correctly")
    }
}

#[test]
fn test_is_variant_c() {
    let v = Value::from(TestEnum::C { foo: 1.0 });
    if let Type::Enum(ty) = v.ty() {
        let variant = &ty.variants()[2];
        assert!(variant
            .is_variant(&v)
            .expect("Value wasn't of the right type"))
    } else {
        panic!("TestEnum wasn't reflected correctly")
    }
}