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