summaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-24 14:48:20 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-24 14:48:20 +0100
commit3d82d75006363dd0c2243ecf3ff4da0c10c88881 (patch)
tree5258f2200c195f9ccac2580073c5201666be0c64 /src/main/java/org/zwobble
parent98b6ebd8aaea0f4318de3fcc750d8d24cfb299bc (diff)
Extract mapErr
Diffstat (limited to 'src/main/java/org/zwobble')
-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)
)
)
);