1
Fork 0

Add explanations for why we use Variant::Struct instead of Variant::Tuple for tuple structs in enums

This commit is contained in:
Guillaume Gomez 2021-07-27 13:52:15 +02:00
parent fbf78e1f9c
commit c4aa73525b

View file

@ -1730,6 +1730,12 @@ impl Clean<Variant> for hir::VariantData<'_> {
fn clean(&self, cx: &mut DocContext<'_>) -> Variant {
match self {
hir::VariantData::Struct(..) => Variant::Struct(self.clean(cx)),
// Important note here: `Variant::Tuple` is used on tuple structs which are not in an
// enum (so where converting from `ty::VariantDef`). In case we are in an enum, the kind
// is provided by the `Variant` wrapper directly, and since we need the fields' name
// (even for a tuple struct variant!), it's simpler to just store it as a
// `Variant::Struct` instead of a `Variant::Tuple` (otherwise it would force us to make
// a lot of changes when rendering them to generate the name as well).
hir::VariantData::Tuple(..) => Variant::Struct(self.clean(cx)),
hir::VariantData::Unit(..) => Variant::CLike,
}