在Rust中,表达式结尾不需要分号。陈述确实如此。
尽管如此,用于在Rust中声明struct
的语法如下:
struct Rectangle {
width: u32,
height: u32,
}
如您所见,尽管struct
声明是一个语句,但最后没有分号。可以通过运行以下代码来证明这一点:
println!("{:#?}",
struct foo {
bar: u32,
}
);
这将导致以下错误:
error: expected expression, found keyword `struct`
--> src/main.rs:104:9
|
104 | struct foo {
| ^^^^^^ expected expression
从而证明结构声明确实不是表达式。
以下是在声明中使用代码块的类似语法:
let foo = {
if true {
1
} else {
2
}
};
如您所见,在这种情况下,需要使用分号。
问题是: 为什么在Rust的末尾结构声明不要求分号?
感谢您的帮助!