1 个不稳定版本

使用旧的 Rust 2015

0.1.1 2016年2月2日

#18 in #pod

MIT/Apache

12KB
152

typeinfo

Build Status Build Status

文档

typeinfo 包提供了对 POD(纯旧数据)类型运行时类型信息的访问。

示例

定义可反射的结构体类型只需要将结构体定义包裹在 def! 宏中

#[use_macro]
extern crate typeinfo;
use typeinfo::TypeInfo;

def! {
    #[derive(Debug)]
    pub struct Color { r: u16, g: u16, b: u16, }

    #[derive(Debug)]
    #[repr(packed)]
    pub struct Palette {
        monochrome: bool,
        colors: [Color; 16]
    }
}

fn main() {
    println!("{:#?}", Palette::type_info());
}

输出(空白格式化)

Compound([
    Field { ty: Bool, name: "monochrome", offset: 0 },
    Field {
        ty: Array(
                Compound([
                    Field { ty: UInt16, name: "r", offset: 0 },
                    Field { ty: UInt16, name: "g", offset: 2 },
                    Field { ty: UInt16, name: "b", offset: 4 }
                ], 6),
            16),
        name: "colors",
        offset: 1
    }
], 97)

许可证

typeinfo 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发,部分内容受各种类似 BSD 的许可证的覆盖。

详见 LICENSE-APACHELICENSE-MIT

依赖关系

~0–295KB