1pub trait Type: 'static + Clone + Copy + Default {} 2 3pub trait TypeOf<T>: Type {} 4 5pub trait Value { 6 type Type: Type; 7} 8 9#[macro_export] 10macro_rules! assert_ty { 11 ($a: ty, $b: ty) => { 12 let _: $a = <$b>::default(); 13 } 14} 15