Right now, we have a very consistent rule: you need semicolons after any construct that doesn't take braces, and you need to omit the semicolon after any construct that takes braces. For instance, if {}, for {}, loop {}, if {} else {}, struct {}, enum {}, union {}, and extern {} all don't take semicolons. And for a variety of reasons we can't change most of those. Making some subset of them ignore unnecessary semicolons seems like a trap for users; better to document the pattern consistently.
I do think, however, we could make the error message much clearer. Right now, it just acts like any other parse error. We could recognize this specific case and very specifically say "don't put a ; after a struct" (and similarly for union and enum), to make the message more straightforward to understand and act on.