summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java25
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)
)
)
);