#[macro_use]
mod macros;
mod types;
pub use types::*;
pub trait RTTI {
fn ctti() -> Type;
fn rtti(self: &Self) -> Type {
Self::ctti()
}
}
#[doc(hidden)]
pub struct Ignored ();
impl RTTI for Ignored {
fn ctti() -> Type {
Type::Ignored
}
}
mod wrapper {
impl_prim!(usize, usize);
impl_prim!(isize, isize);
impl_prim!(u8, u8);
impl_prim!(i8, i8);
impl_prim!(u16, u16);
impl_prim!(i16, i16);
impl_prim!(u32, u32);
impl_prim!(i32, i32);
impl_prim!(u64, u64);
impl_prim!(i64, i64);
impl_prim!(f32, f32);
impl_prim!(f64, f64);
impl_prim!(char, char);
impl_prim!(bool, bool);
impl_opaque!(std::rc::Rc, Rc);
impl_opaque!(std::cell::Cell, Cell);
impl_opaque!(std::cell::RefCell, RefCell);
impl_opaque!(std::cell::UnsafeCell, UnsafeCell);
impl_opaque!(std::boxed::Box, Box);
impl_opaque!(std::sync::Arc, Arc);
impl_opaque!(std::sync::Mutex, Mutex);
impl_opaque!(std::sync::RwLock, RwLock);
impl_opaque!(std::sync::Weak, Weak);
impl_opaque!(std::vec::Vec, Vec);
impl_opaque!(std::collections::VecDeque, VecDeque);
impl_opaque!(std::collections::LinkedList, LinkedList);
impl_opaque!(std::collections::BTreeSet, BTreeSet);
impl_opaque!(std::collections::BinaryHeap, BinaryHeap);
impl_opaque!(std::marker::PhantomData, PhantomData);
}