diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java index 5552f2d..785d20e 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java @@ -16,6 +16,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.function.Function; import java.util.stream.IntStream; import java.util.stream.Stream; @@ -272,6 +273,22 @@ public class RustTransient0Generator implements Generator { } private RustExpression mapErrToInvalidData(RustExpression result) { + return mapErr( + result, + error -> new RustCallExpression( + RustPath.global("std", "io", "Error", "new"), + List.of( + RustPath.global("std", "io", "ErrorKind", "InvalidData"), + RustPath.of(error) + ) + ) + ); + } + + private RustExpression mapErr( + RustExpression result, + Function<RustIdentifier, RustExpression> func + ) { var error = RustIdentifier.of("error"); return methodCall( @@ -280,13 +297,7 @@ public class RustTransient0Generator implements Generator { List.of( new RustClosureExpression( List.of(new RustIdentifierPattern(error)), - new RustCallExpression( - RustPath.global("std", "io", "Error", "new"), - List.of( - RustPath.global("std", "io", "ErrorKind", "InvalidData"), - RustPath.of(error) - ) - ) + func.apply(error) ) ) ); |
