5个版本 (3个破坏性更改)
使用旧的Rust 2015
0.4.0 | 2018年3月18日 |
---|---|
0.3.2 | 2018年2月26日 |
0.2.0 | 2018年2月22日 |
0.1.0 | 2018年2月21日 |
#36 in #早期
10KB
202 行
RTTI-derive
用于派生RTTI特征的进程宏。参见crate rtti
。
非常早期,现在最好保持距离
文档.
lib.rs
:
运行时类型信息特征。使用crate rtti-derive
实现。
要包含RTTI,使用
#[macro_use]
extern crate rtti_derive;
extern crate rtti;
use rtti::RTTI;
然后可以为自定义类型实现 rtti()
#
#[derive(RTTI)]
struct Simple {
x: u32,
pub y: ::std::sync::Arc<u32>,
pub(crate) z: Vec<f64>
}
fn main() {
println!("{:?}", Simple::ctti());
}
可以使用ignore和hint属性忽略字段或添加提示
#
struct UnsupportedForeignType ();
#[derive(RTTI)]
struct Attributed {
#[rtti(hint = "foo")]
#[rtti(hint = "bar")]
pub foobard: ::std::sync::Arc<u32>,
#[rtti(ignore)]
#[rtti(hint = "sets type to Type::Ignored")]
ignored: UnsupportedForeignType,
}
fn main() {
println!("{:?}", Attributed::ctti());
}
在为泛型类型实现RTTI时,请确保泛型参数实现RTTI
#[derive(RTTI)]
struct Generic<T> where T: RTTI {
test: T,
stuff: i32,
}
fn main() {
println!("{:?}", Generic::<u64>::ctti());
}