Rust 结构定义中的最后一个逗号是否必要?

fre*_*esh 3 rust

考虑以下代码:

struct User {
    user: String,
    email: String,
}
Run Code Online (Sandbox Code Playgroud)

编译器不会抱怨它。email字段后的尾随逗号让我觉得很奇怪,所以我尝试了这个:

struct User {
    user: String,
    email: String // no comma
}
Run Code Online (Sandbox Code Playgroud)

编译器仍然没有抱怨。两者有区别还是完全等价?

Séb*_*uld 8

最后一个逗号在struct定义中完全是可选的。这纯粹是方便;它允许您保留结尾的逗号,因此如果您添加其他字段、删除字段或更改其顺序,则不必返回并修改一行。

巧合的是,它还使从宏生成代码变得更容易,因为您的代码生成宏不再需要跟踪您是否在最后生成的字段上。

一个时间时,你会看到一个尾随逗号是强制性是像宏diesel table!宏,原因是下到宏调用结构由所选择的diesel开发人员。