summaryrefslogtreecommitdiff
path: root/examples/12-transient-0/output
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-31 10:57:39 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-31 10:57:39 +0100
commit2f76934bf2aa59f78b671c722b73f0d69c7adbd3 (patch)
tree6784f78eafe1bd2d906f410440b101b660e09077 /examples/12-transient-0/output
parent578bf1f04b48f48225cfa794a27426cca4f6384a (diff)
Handle singleton structs in Rust
Diffstat (limited to 'examples/12-transient-0/output')
-rw-r--r--examples/12-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java13
-rw-r--r--examples/12-transient-0/output/rust/src/gen/data.rs3
-rw-r--r--examples/12-transient-0/output/rust/src/gen/data/transient_0.rs8
-rw-r--r--examples/12-transient-0/output/rust/src/lib.rs14
4 files changed, 37 insertions, 1 deletions
diff --git a/examples/12-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java b/examples/12-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
index a924d1e..d8d4f3f 100644
--- a/examples/12-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
+++ b/examples/12-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
@@ -15,6 +15,7 @@ import java.util.Optional;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.zwobble.example.types.data.EnumWithVariants;
+import org.zwobble.example.types.data.StructSingleton;
import org.zwobble.example.types.data.StructWithBool;
import org.zwobble.example.types.data.StructWithDifferentSharedTypes;
import org.zwobble.example.types.data.StructWithEnum;
@@ -34,6 +35,18 @@ import org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue
public class Transient0Tests {
@Test
+ public void structSingleton() throws IOException {
+ var value = StructSingleton.INSTANCE;
+
+ assertRoundTripEncoding(
+ "StructSingleton",
+ value,
+ HobgoblinTransient0Data::encodeStructSingleton,
+ HobgoblinTransient0Data::decodeStructSingleton
+ );
+ }
+
+ @Test
public void structWithBool() throws IOException {
var value = new StructWithBool(true, false);
diff --git a/examples/12-transient-0/output/rust/src/gen/data.rs b/examples/12-transient-0/output/rust/src/gen/data.rs
index 4ec0524..aef9f69 100644
--- a/examples/12-transient-0/output/rust/src/gen/data.rs
+++ b/examples/12-transient-0/output/rust/src/gen/data.rs
@@ -1,6 +1,9 @@
// Generated by hobgoblin.
#[derive(Debug, Hash, PartialEq)]
+pub struct StructSingleton;
+
+#[derive(Debug, Hash, PartialEq)]
pub struct StructWithBool {
pub a: ::core::primitive::bool,
pub b: ::core::primitive::bool,
diff --git a/examples/12-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/12-transient-0/output/rust/src/gen/data/transient_0.rs
index ea4a459..ca9beaf 100644
--- a/examples/12-transient-0/output/rust/src/gen/data/transient_0.rs
+++ b/examples/12-transient-0/output/rust/src/gen/data/transient_0.rs
@@ -1,5 +1,13 @@
// Generated by hobgoblin.
+pub fn encode_struct_singleton(value: &crate::data::StructSingleton, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> {
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_singleton(reader: &mut impl std::io::Read, shared_values: &mut ::std::vec::Vec::<::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>>) -> ::std::io::Result::<crate::data::StructSingleton> {
+ ::std::io::Result::Ok(crate::data::StructSingleton)
+}
+
pub fn encode_struct_with_bool(value: &crate::data::StructWithBool, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> {
crate::transient_0::encode_bool(&value.a, writer, shared_values)?;
crate::transient_0::encode_bool(&value.b, writer, shared_values)?;
diff --git a/examples/12-transient-0/output/rust/src/lib.rs b/examples/12-transient-0/output/rust/src/lib.rs
index 3a02936..365a352 100644
--- a/examples/12-transient-0/output/rust/src/lib.rs
+++ b/examples/12-transient-0/output/rust/src/lib.rs
@@ -8,7 +8,19 @@ mod test {
use std::path::PathBuf;
use std::sync::Arc;
use std::collections::HashMap;
- use super::data::{EnumWithVariants, StructWithBool, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithVariants, VariantOne, VariantTwo };
+ use super::data::{EnumWithVariants, StructSingleton, StructWithBool, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithVariants, VariantOne, VariantTwo };
+
+ #[test]
+ fn struct_singleton() {
+ let value = StructSingleton;
+
+ assert_round_trip_encoding(
+ "StructSingleton",
+ value,
+ super::data::transient_0::encode_struct_singleton,
+ super::data::transient_0::decode_struct_singleton,
+ );
+ }
#[test]
fn struct_with_bool() {