From 6d87397a04e0cd35a5560b50de37c3a3ed550af0 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 2 Jul 2026 16:49:54 +0100 Subject: Handle boxing in Rust output --- .../generators/rusttypes/RustTypesGenerator.java | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src/main/java') 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()); -- cgit v1.2.3