2个不稳定版本

0.2.0 2023年9月24日
0.1.0 2023年6月24日

#85 in #i32


用于 cxc

MIT/Apache

11KB
194

🪞 cxc-derive: 使任何类型可用于cxc

use cxc::Unit;
use cxc::XcReflect;

#[derive(Default, Clone, Copy, Debug, XcReflect, PartialEq, Eq)]
pub struct Numbers5 {
    pub a: i32,
    pub b: i32,
    pub c: i32,
    pub d: i32,
    pub e: i32,
}

#[test]
fn numbers_5() {
    let mut unit = Unit::new();

    unit.add_reflect_type::<Numbers5>();
    unit.add_external_default::<Numbers5>();

    unit.push_script(
        "
        some_numbers(); Numbers5 {
            ; Numbers5 { a = 4, b = 9, c = 39, ++ }
        }
        "
    ).unwrap();

    let some_numbers = unit.get_fn("some_numbers").unwrap().downcast::<(), Numbers5>();
    let numbers5 = some_numbers();

    assert_eq!(numbers5, Numbers5 { a: 4, b: 9, c: 39, ..Default::default() });
}

支持常规结构体类型、枚举、元组、函数类型、引用、原始指针等。据我所知,它不支持联合,因为那些不在 cxc 中。如果您认为它不支持但应该支持的东西,请提交一个 问题

依赖项

~1.5MB
~36K SLoC