// run-pass #![feature(const_type_id)] #![feature(core_intrinsics)] use std::any::TypeId; struct A; static ID_ISIZE: TypeId = TypeId::of::(); pub fn main() { assert_eq!(ID_ISIZE, TypeId::of::()); // sanity test of TypeId const T: (TypeId, TypeId, TypeId) = (TypeId::of::(), TypeId::of::<&'static str>(), TypeId::of::()); let (d, e, f) = (TypeId::of::(), TypeId::of::<&'static str>(), TypeId::of::()); assert!(T.0 != T.1); assert!(T.0 != T.2); assert!(T.1 != T.2); assert_eq!(T.0, d); assert_eq!(T.1, e); assert_eq!(T.2, f); // Check fn pointer against collisions const F: (TypeId, TypeId) = (TypeId::of:: A) -> A>(), TypeId::of:: A, A) -> A>()); assert!(F.0 != F.1); }