Crate metatype[−][src]
Helper methods to determine whether a type is TraitObject
, Slice
or Concrete
, and work with them respectively.
Examples
assert_eq!(usize::METATYPE, MetaType::Concrete); assert_eq!(any::Any::METATYPE, MetaType::TraitObject); assert_eq!(<[u8]>::METATYPE, MetaType::Slice); let a: Box<usize> = Box::new(123); assert_eq!((&*a).meta_type(), MetaType::Concrete); let a: Box<any::Any> = a; assert_eq!((&*a).meta_type(), MetaType::TraitObject); let a = [123,456]; assert_eq!(a.meta_type(), MetaType::Concrete); let a: &[i32] = &a; assert_eq!(a.meta_type(), MetaType::Slice); let a: Box<any::Any> = Box::new(123); // https://github.com/rust-lang/rust/issues/50318 // let meta: TraitObject = (&*a).meta(); // println!("vtable: {:?}", meta.vtable);
Note
This currently requires Rust nightly for the raw
and specialization
features.
Structs
Concrete |
Meta data for a concrete, sized type |
Slice |
Meta data for a slice |
TraitObject |
Meta data for a trait object |
Enums
MetaType |
Meta type of a type |
Traits
Type |
Implemented on all types, it provides helper methods to determine whether a type is |