2
如果我们在全局范围的枚举声明的末尾添加;
,编译器会报错。为什么在全局范围中声明的枚举不需要终止分号?
#[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);
}
我浪费了很多时间(刚才)确定编译器在抱怨什么。我没有想到枚举声明(在全局范围内)不能以;
终止。为什么存在这种不一致(或者我误解了什么)?
确实'fn main(){;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ''实际上编译! – Levans 2015-04-04 08:11:55
我的实际问题不是第二个例子,而是第一个例子。为什么用';'终止全局范围中的枚举声明会产生编译器错误? – 2015-04-04 13:47:04
@basic_bgnr:你*不是*用*结束enum声明---你正在写一个空的语句,并且你不能在模块级别有语句。请注意,有一些声明表单需要*分号(例如,写入没有成员的'struct'或'enum'),但这不是其中之一。 – 2015-04-06 02:32:16