@@ -9,11 +9,12 @@ pub enum TargetArch {
99 X86_64 ,
1010 RiscV64 ,
1111 AArch64 ,
12+ LoongArch64 ,
1213}
1314
1415impl TargetArch {
1516 /// 期望的目标处理器架构(如果修改了枚举,那一定要修改这里)
16- pub const EXPECTED : [ & ' static str ; 3 ] = [ "x86_64" , "riscv64" , "aarch64" ] ;
17+ pub const EXPECTED : [ & ' static str ; 4 ] = [ "x86_64" , "riscv64" , "aarch64" , "loongarch64 "] ;
1718}
1819
1920impl TryFrom < & str > for TargetArch {
@@ -24,6 +25,7 @@ impl TryFrom<&str> for TargetArch {
2425 "x86_64" => Ok ( TargetArch :: X86_64 ) ,
2526 "riscv64" => Ok ( TargetArch :: RiscV64 ) ,
2627 "aarch64" => Ok ( TargetArch :: AArch64 ) ,
28+ "loongarch64" => Ok ( TargetArch :: LoongArch64 ) ,
2729 _ => Err ( format ! ( "Unknown target arch: {}" , value) ) ,
2830 }
2931 }
@@ -35,6 +37,7 @@ impl From<TargetArch> for &str {
3537 TargetArch :: X86_64 => "x86_64" ,
3638 TargetArch :: RiscV64 => "riscv64" ,
3739 TargetArch :: AArch64 => "aarch64" ,
40+ TargetArch :: LoongArch64 => "loongarch64" ,
3841 }
3942 }
4043}
@@ -80,6 +83,7 @@ impl Display for TargetArch {
8083 TargetArch :: X86_64 => write ! ( f, "x86_64" ) ,
8184 TargetArch :: RiscV64 => write ! ( f, "riscv64" ) ,
8285 TargetArch :: AArch64 => write ! ( f, "aarch64" ) ,
86+ TargetArch :: LoongArch64 => write ! ( f, "loongarch64" ) ,
8387 }
8488 }
8589}
@@ -105,6 +109,9 @@ mod tests {
105109
106110 let aarch64 = TargetArch :: try_from ( "aarch64" ) . unwrap ( ) ;
107111 assert_eq ! ( aarch64, TargetArch :: AArch64 ) ;
112+
113+ let loongarch64 = TargetArch :: try_from ( "loongarch64" ) . unwrap ( ) ;
114+ assert_eq ! ( loongarch64, TargetArch :: LoongArch64 ) ;
108115 }
109116
110117 #[ test]
@@ -121,6 +128,12 @@ mod tests {
121128
122129 let riscv64: & str = TargetArch :: RiscV64 . into ( ) ;
123130 assert_eq ! ( riscv64, "riscv64" ) ;
131+
132+ let aarch64: & str = TargetArch :: AArch64 . into ( ) ;
133+ assert_eq ! ( aarch64, "aarch64" ) ;
134+
135+ let loongarch64: & str = TargetArch :: LoongArch64 . into ( ) ;
136+ assert_eq ! ( loongarch64, "loongarch64" ) ;
124137 }
125138
126139 #[ test]
@@ -141,6 +154,15 @@ mod tests {
141154 let json_riscv64 = r#""riscv64""# ;
142155 let riscv64: TargetArch = serde_json:: from_str ( json_riscv64) . unwrap ( ) ;
143156 assert_eq ! ( riscv64, TargetArch :: RiscV64 ) ;
157+
158+ let json_aarch64 = r#""aarch64""# ;
159+ let aarch64: TargetArch = serde_json:: from_str ( json_aarch64) . unwrap ( ) ;
160+
161+ assert_eq ! ( aarch64, TargetArch :: AArch64 ) ;
162+
163+ let json_loongarch64 = r#""loongarch64""# ;
164+ let loongarch64: TargetArch = serde_json:: from_str ( json_loongarch64) . unwrap ( ) ;
165+ assert_eq ! ( loongarch64, TargetArch :: LoongArch64 ) ;
144166 }
145167
146168 #[ test]
0 commit comments