@@ -49,63 +49,67 @@ pub enum BuiltinType {
4949
5050impl BuiltinType {
5151 #[ rustfmt:: skip]
52- pub const ALL : & ' static [ ( Name , BuiltinType ) ] = & [
53- ( Name :: new_symbol_root ( sym:: char) , BuiltinType :: Char ) ,
54- ( Name :: new_symbol_root ( sym:: bool) , BuiltinType :: Bool ) ,
55- ( Name :: new_symbol_root ( sym:: str) , BuiltinType :: Str ) ,
56-
57- ( Name :: new_symbol_root ( sym:: isize) , BuiltinType :: Int ( BuiltinInt :: Isize ) ) ,
58- ( Name :: new_symbol_root ( sym:: i8) , BuiltinType :: Int ( BuiltinInt :: I8 ) ) ,
59- ( Name :: new_symbol_root ( sym:: i16) , BuiltinType :: Int ( BuiltinInt :: I16 ) ) ,
60- ( Name :: new_symbol_root ( sym:: i32) , BuiltinType :: Int ( BuiltinInt :: I32 ) ) ,
61- ( Name :: new_symbol_root ( sym:: i64) , BuiltinType :: Int ( BuiltinInt :: I64 ) ) ,
62- ( Name :: new_symbol_root ( sym:: i128) , BuiltinType :: Int ( BuiltinInt :: I128 ) ) ,
63-
64- ( Name :: new_symbol_root ( sym:: usize) , BuiltinType :: Uint ( BuiltinUint :: Usize ) ) ,
65- ( Name :: new_symbol_root ( sym:: u8) , BuiltinType :: Uint ( BuiltinUint :: U8 ) ) ,
66- ( Name :: new_symbol_root ( sym:: u16) , BuiltinType :: Uint ( BuiltinUint :: U16 ) ) ,
67- ( Name :: new_symbol_root ( sym:: u32) , BuiltinType :: Uint ( BuiltinUint :: U32 ) ) ,
68- ( Name :: new_symbol_root ( sym:: u64) , BuiltinType :: Uint ( BuiltinUint :: U64 ) ) ,
69- ( Name :: new_symbol_root ( sym:: u128) , BuiltinType :: Uint ( BuiltinUint :: U128 ) ) ,
70-
71- ( Name :: new_symbol_root ( sym:: f16) , BuiltinType :: Float ( BuiltinFloat :: F16 ) ) ,
72- ( Name :: new_symbol_root ( sym:: f32) , BuiltinType :: Float ( BuiltinFloat :: F32 ) ) ,
73- ( Name :: new_symbol_root ( sym:: f64) , BuiltinType :: Float ( BuiltinFloat :: F64 ) ) ,
74- ( Name :: new_symbol_root ( sym:: f128) , BuiltinType :: Float ( BuiltinFloat :: F128 ) ) ,
75- ] ;
52+ pub fn all_builtin_types ( ) -> [ ( Name , BuiltinType ) ; 19 ] {
53+ [
54+ ( Name :: new_symbol_root ( sym:: char. clone ( ) ) , BuiltinType :: Char ) ,
55+ ( Name :: new_symbol_root ( sym:: bool. clone ( ) ) , BuiltinType :: Bool ) ,
56+ ( Name :: new_symbol_root ( sym:: str. clone ( ) ) , BuiltinType :: Str ) ,
57+
58+ ( Name :: new_symbol_root ( sym:: isize. clone ( ) ) , BuiltinType :: Int ( BuiltinInt :: Isize ) ) ,
59+ ( Name :: new_symbol_root ( sym:: i8. clone ( ) ) , BuiltinType :: Int ( BuiltinInt :: I8 ) ) ,
60+ ( Name :: new_symbol_root ( sym:: i16. clone ( ) ) , BuiltinType :: Int ( BuiltinInt :: I16 ) ) ,
61+ ( Name :: new_symbol_root ( sym:: i32. clone ( ) ) , BuiltinType :: Int ( BuiltinInt :: I32 ) ) ,
62+ ( Name :: new_symbol_root ( sym:: i64. clone ( ) ) , BuiltinType :: Int ( BuiltinInt :: I64 ) ) ,
63+ ( Name :: new_symbol_root ( sym:: i128. clone ( ) ) , BuiltinType :: Int ( BuiltinInt :: I128 ) ) ,
64+
65+ ( Name :: new_symbol_root ( sym:: usize. clone ( ) ) , BuiltinType :: Uint ( BuiltinUint :: Usize ) ) ,
66+ ( Name :: new_symbol_root ( sym:: u8. clone ( ) ) , BuiltinType :: Uint ( BuiltinUint :: U8 ) ) ,
67+ ( Name :: new_symbol_root ( sym:: u16. clone ( ) ) , BuiltinType :: Uint ( BuiltinUint :: U16 ) ) ,
68+ ( Name :: new_symbol_root ( sym:: u32. clone ( ) ) , BuiltinType :: Uint ( BuiltinUint :: U32 ) ) ,
69+ ( Name :: new_symbol_root ( sym:: u64. clone ( ) ) , BuiltinType :: Uint ( BuiltinUint :: U64 ) ) ,
70+ ( Name :: new_symbol_root ( sym:: u128. clone ( ) ) , BuiltinType :: Uint ( BuiltinUint :: U128 ) ) ,
71+
72+ ( Name :: new_symbol_root ( sym:: f16. clone ( ) ) , BuiltinType :: Float ( BuiltinFloat :: F16 ) ) ,
73+ ( Name :: new_symbol_root ( sym:: f32. clone ( ) ) , BuiltinType :: Float ( BuiltinFloat :: F32 ) ) ,
74+ ( Name :: new_symbol_root ( sym:: f64. clone ( ) ) , BuiltinType :: Float ( BuiltinFloat :: F64 ) ) ,
75+ ( Name :: new_symbol_root ( sym:: f128. clone ( ) ) , BuiltinType :: Float ( BuiltinFloat :: F128 ) ) ,
76+ ]
77+ }
7678
7779 pub fn by_name ( name : & Name ) -> Option < Self > {
78- Self :: ALL . iter ( ) . find_map ( |( n, ty) | if n == name { Some ( * ty) } else { None } )
80+ Self :: all_builtin_types ( )
81+ . iter ( )
82+ . find_map ( |( n, ty) | if n == name { Some ( * ty) } else { None } )
7983 }
8084}
8185
8286impl AsName for BuiltinType {
8387 fn as_name ( & self ) -> Name {
8488 match self {
85- BuiltinType :: Char => Name :: new_symbol_root ( sym:: char) ,
86- BuiltinType :: Bool => Name :: new_symbol_root ( sym:: bool) ,
87- BuiltinType :: Str => Name :: new_symbol_root ( sym:: str) ,
89+ BuiltinType :: Char => Name :: new_symbol_root ( sym:: char. clone ( ) ) ,
90+ BuiltinType :: Bool => Name :: new_symbol_root ( sym:: bool. clone ( ) ) ,
91+ BuiltinType :: Str => Name :: new_symbol_root ( sym:: str. clone ( ) ) ,
8892 BuiltinType :: Int ( it) => match it {
89- BuiltinInt :: Isize => Name :: new_symbol_root ( sym:: isize) ,
90- BuiltinInt :: I8 => Name :: new_symbol_root ( sym:: i8) ,
91- BuiltinInt :: I16 => Name :: new_symbol_root ( sym:: i16) ,
92- BuiltinInt :: I32 => Name :: new_symbol_root ( sym:: i32) ,
93- BuiltinInt :: I64 => Name :: new_symbol_root ( sym:: i64) ,
94- BuiltinInt :: I128 => Name :: new_symbol_root ( sym:: i128) ,
93+ BuiltinInt :: Isize => Name :: new_symbol_root ( sym:: isize. clone ( ) ) ,
94+ BuiltinInt :: I8 => Name :: new_symbol_root ( sym:: i8. clone ( ) ) ,
95+ BuiltinInt :: I16 => Name :: new_symbol_root ( sym:: i16. clone ( ) ) ,
96+ BuiltinInt :: I32 => Name :: new_symbol_root ( sym:: i32. clone ( ) ) ,
97+ BuiltinInt :: I64 => Name :: new_symbol_root ( sym:: i64. clone ( ) ) ,
98+ BuiltinInt :: I128 => Name :: new_symbol_root ( sym:: i128. clone ( ) ) ,
9599 } ,
96100 BuiltinType :: Uint ( it) => match it {
97- BuiltinUint :: Usize => Name :: new_symbol_root ( sym:: usize) ,
98- BuiltinUint :: U8 => Name :: new_symbol_root ( sym:: u8) ,
99- BuiltinUint :: U16 => Name :: new_symbol_root ( sym:: u16) ,
100- BuiltinUint :: U32 => Name :: new_symbol_root ( sym:: u32) ,
101- BuiltinUint :: U64 => Name :: new_symbol_root ( sym:: u64) ,
102- BuiltinUint :: U128 => Name :: new_symbol_root ( sym:: u128) ,
101+ BuiltinUint :: Usize => Name :: new_symbol_root ( sym:: usize. clone ( ) ) ,
102+ BuiltinUint :: U8 => Name :: new_symbol_root ( sym:: u8. clone ( ) ) ,
103+ BuiltinUint :: U16 => Name :: new_symbol_root ( sym:: u16. clone ( ) ) ,
104+ BuiltinUint :: U32 => Name :: new_symbol_root ( sym:: u32. clone ( ) ) ,
105+ BuiltinUint :: U64 => Name :: new_symbol_root ( sym:: u64. clone ( ) ) ,
106+ BuiltinUint :: U128 => Name :: new_symbol_root ( sym:: u128. clone ( ) ) ,
103107 } ,
104108 BuiltinType :: Float ( it) => match it {
105- BuiltinFloat :: F16 => Name :: new_symbol_root ( sym:: f16) ,
106- BuiltinFloat :: F32 => Name :: new_symbol_root ( sym:: f32) ,
107- BuiltinFloat :: F64 => Name :: new_symbol_root ( sym:: f64) ,
108- BuiltinFloat :: F128 => Name :: new_symbol_root ( sym:: f128) ,
109+ BuiltinFloat :: F16 => Name :: new_symbol_root ( sym:: f16. clone ( ) ) ,
110+ BuiltinFloat :: F32 => Name :: new_symbol_root ( sym:: f32. clone ( ) ) ,
111+ BuiltinFloat :: F64 => Name :: new_symbol_root ( sym:: f64. clone ( ) ) ,
112+ BuiltinFloat :: F128 => Name :: new_symbol_root ( sym:: f128. clone ( ) ) ,
109113 } ,
110114 }
111115 }
0 commit comments