diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-31 10:57:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-31 10:57:39 +0100 |
| commit | 2f76934bf2aa59f78b671c722b73f0d69c7adbd3 (patch) | |
| tree | 6784f78eafe1bd2d906f410440b101b660e09077 /examples/12-transient-0/output | |
| parent | 578bf1f04b48f48225cfa794a27426cca4f6384a (diff) | |
Handle singleton structs in Rust
Diffstat (limited to 'examples/12-transient-0/output')
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() { |
