From 00cc7fcf117ef694280624b314d43e1864425433 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 24 Jul 2026 15:00:50 +0100 Subject: Support enum as field in rust-transient-0 --- .../10-transient-0/output/rust/src/gen/data/transient_0.rs | 4 ++-- examples/10-transient-0/output/rust/src/lib.rs | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'examples/10-transient-0/output/rust') diff --git a/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs index 9892a8c..867318d 100644 --- a/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs +++ b/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs @@ -157,13 +157,13 @@ pub fn decode_enum_with_variants(reader: &mut impl std::io::Read) -> ::std::io:: } pub fn encode_struct_with_enum(value: &crate::data::StructWithEnum, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { - todo!(); + crate::data::transient_0::encode_enum_with_variants(&value.inner, writer)?; crate::transient_0::encode_int_32(&value.c, writer)?; ::std::io::Result::Ok(()) } pub fn decode_struct_with_enum(reader: &mut impl std::io::Read) -> ::std::io::Result:: { - let inner = todo!(); + let inner = crate::data::transient_0::decode_enum_with_variants(reader)?; let c = crate::transient_0::decode_int_32(reader)?; std::io::Result::Ok(crate::data::StructWithEnum { inner: inner, c: c }) } diff --git a/examples/10-transient-0/output/rust/src/lib.rs b/examples/10-transient-0/output/rust/src/lib.rs index 0ca708d..ffd923a 100644 --- a/examples/10-transient-0/output/rust/src/lib.rs +++ b/examples/10-transient-0/output/rust/src/lib.rs @@ -4,7 +4,7 @@ pub mod transient_0; #[cfg(test)] mod test { use std::io::Cursor; - use super::data::{EnumWithVariants, StructWithBool, StructWithInt32, StructWithInt64, StructWithList, StructWithOption, StructWithString, StructWithStruct, SumWithVariants, VariantOne, VariantTwo }; + use super::data::{EnumWithVariants, StructWithBool, StructWithEnum, StructWithInt32, StructWithInt64, StructWithList, StructWithOption, StructWithString, StructWithStruct, SumWithVariants, VariantOne, VariantTwo }; #[test] fn struct_with_bool() { @@ -128,6 +128,17 @@ mod test { ); } + #[test] + fn struct_with_enum() { + let value = StructWithEnum { inner: EnumWithVariants::One, c: 42 }; + + assert_round_trip_encoding( + value, + super::data::transient_0::encode_struct_with_enum, + super::data::transient_0::decode_struct_with_enum, + ); + } + #[test] fn sum_with_variants() { assert_round_trip_encoding( -- cgit v1.2.3