首页 > 解决方案 > Rust 结构定义中的最后一个逗号是否必要?

问题描述

考虑以下代码:

struct User {
    user: String,
    email: String,
}

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

struct User {
    user: String,
    email: String // no comma
}

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

标签: rust

解决方案


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

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

一次你会看到必须使用尾随逗号是在宏之类的diesel table!宏中,原因在于开发人员选择的宏调用结构diesel


推荐阅读