From 99c0decbe77aad764e778fe00756aa6d5eef10e8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 17 Jul 2026 10:56:55 +0100 Subject: Support nested structs 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 | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'examples/10-transient-0') 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 2945bdc..318e4c6 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 @@ -45,12 +45,12 @@ pub fn decode_struct_with_string(reader: &mut impl std::io::Read) -> crate::data } pub fn encode_outer_struct(value: &crate::data::OuterStruct, writer: &mut impl std::io::Write) { - todo!(); + crate::data::transient_0::encode_inner_struct(&value.inner, writer); crate::transient_0::encode_int_32(&value.c, writer); } pub fn decode_outer_struct(reader: &mut impl std::io::Read) -> crate::data::OuterStruct { - let inner = todo!(); + let inner = crate::data::transient_0::decode_inner_struct(reader); let c = crate::transient_0::decode_int_32(reader); crate::data::OuterStruct { 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 9b53c0e..6468674 100644 --- a/examples/10-transient-0/output/rust/src/lib.rs +++ b/examples/10-transient-0/output/rust/src/lib.rs @@ -4,8 +4,7 @@ pub mod transient_0; #[cfg(test)] mod test { use std::io::Cursor; - use super::data::StructWithInt32; - use super::data::StructWithInt64; + use super::data::{InnerStruct, OuterStruct, StructWithInt32, StructWithInt64}; #[test] fn struct_with_int_32() { @@ -29,6 +28,17 @@ mod test { ); } + #[test] + fn nested_struct() { + let value = OuterStruct { inner: InnerStruct { a: 10, b: 25 }, c: 42 }; + + assert_round_trip_encoding( + value, + super::data::transient_0::encode_outer_struct, + super::data::transient_0::decode_outer_struct, + ); + } + fn assert_round_trip_encoding( value: T, encode: impl Fn(&T, &mut Cursor>), -- cgit v1.2.3