1 个不稳定版本
使用旧的 Rust 2015
0.1.1 | 2016年2月2日 |
---|
#18 in #pod
12KB
152 行
typeinfo
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-APACHE 和 LICENSE-MIT。
依赖关系
~0–295KB