为什么在全局范围内声明的枚举明确要求不使用终止分号?

时间:2015-04-04 03:07:36

标签: rust

如果我们在全局范围内的枚举声明的末尾显式添加;,编译器会抱怨。

#[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);
}

我浪费了很多时间(刚才)来确定编译器在抱怨什么。我没有想到枚举声明(在全局范围内)不能以;终止。为什么会出现这种不一致(或者我误解了什么)?

1 个答案:

答案 0 :(得分:5)

没有不一致。您在函数中编写的内容是enum项,空语句,以及包含表达式宏调用的语句。