diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java index 8798741..d4e7fd1 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java @@ -152,12 +152,21 @@ public class RustTypesGenerator implements Generator { var rustEnumName = generateTypeName(sumDefinition.name()); var rustVariants = sumDefinition.variants().stream() - .map(variant -> new RustEnumVariant( - generateVariantName(variant.type().value()), - new RustEnumVariantTuple(List.of( - new RustTupleField(generateRustTypeExpression(variant.type(), context)) - )) - )) + .map(variant -> { + var variantType = generateRustTypeExpression(variant.type(), context); + + if (variant.isBox()) { + variantType = RustTypePath.of("std", "boxed", "Box") + .withArgs(List.of(variantType)); + } + + return new RustEnumVariant( + generateVariantName(variant.type().value()), + new RustEnumVariantTuple(List.of( + new RustTupleField(variantType) + )) + ); + }) .toList(); var rustEnum = new RustEnum(rustEnumName, rustVariants, sumDefinition.docComment()); |
