为什么在全局范围内声明的枚举明确不需要终止分号?
Why does an enum declared in the global scope explicitly require no terminating semicolon?
如果我们在全局范围内的枚举声明末尾显式添加 ;
,编译器会报错。
#[derive(Debug)]
enum Organs{
Head,
Tail,
};
fn main(){
println!("{:?}", Organs::Head);
}
生成的错误消息是
enums.rs:5:2: 5:3 error: expected item, found `;`
enums.rs:5 };
但是,当在函数内声明时,语句终止符不是强制性的,程序将在有或没有 ;
的情况下编译。
fn main(){
#[derive(Debug)]
enum Organs{
Head,
Tail,
};
println!("{:?}", Organs::Head);
}
我(刚才)浪费了很多时间来确定编译器在抱怨什么。我没有想到枚举声明(在全局范围内)不能以 ;
终止。为什么会出现这种不一致(或者我误解了什么)?
没有不一致。您在函数中编写的是一个 enum
项、 一个空语句 和一个包含表达式宏调用的语句。
如果我们在全局范围内的枚举声明末尾显式添加 ;
,编译器会报错。
#[derive(Debug)]
enum Organs{
Head,
Tail,
};
fn main(){
println!("{:?}", Organs::Head);
}
生成的错误消息是
enums.rs:5:2: 5:3 error: expected item, found `;`
enums.rs:5 };
但是,当在函数内声明时,语句终止符不是强制性的,程序将在有或没有 ;
的情况下编译。
fn main(){
#[derive(Debug)]
enum Organs{
Head,
Tail,
};
println!("{:?}", Organs::Head);
}
我(刚才)浪费了很多时间来确定编译器在抱怨什么。我没有想到枚举声明(在全局范围内)不能以 ;
终止。为什么会出现这种不一致(或者我误解了什么)?
没有不一致。您在函数中编写的是一个 enum
项、 一个空语句 和一个包含表达式宏调用的语句。