#traits #information #run-time #early #macro #rtti-derive

已弃用 rtti

[非常早期的WIP] 运行时类型信息特征。使用crate rtti-derive实现。

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 #早期

MIT 协议

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());
}

没有运行时依赖