Is there any example of match expressions with no match arms?
Is '{' block '}' really necessary? Doesn’t expr contain block_expr?
According to this syntax, a comma is required after an expression in match_arm but current rustc accepts the last arm with or without a comma. Is this behavior a bug, or the syntax is?
Yes: an empty enum (e.g., enum Foo {}) can be matched with a match with no arms.
It is necessary because blocks in match arms don’t need commas after them (althouth they are allowed). That’s why it’s '{' block '}' instead of '{' block '}' ",".
The fact that rustc can accept the last arm without a comma is intentional. The syntax specification in the reference manual is wrong.