From 904d7f9db65fa5542cdd44b8dd360c271a931cc6 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 31 Jul 2026 15:06:36 +0100 Subject: Handle boxed variants in rust-transient-0 --- .../13-transient-0/output/rust/src/gen/data.rs | 18 ++++++++++++++++++ .../output/rust/src/gen/data/transient_0.rs | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) (limited to 'examples/13-transient-0/output/rust/src/gen') diff --git a/examples/13-transient-0/output/rust/src/gen/data.rs b/examples/13-transient-0/output/rust/src/gen/data.rs index 50a0673..77bcbe8 100644 --- a/examples/13-transient-0/output/rust/src/gen/data.rs +++ b/examples/13-transient-0/output/rust/src/gen/data.rs @@ -92,6 +92,24 @@ pub struct VariantTwo { pub a: ::core::primitive::i64, } +#[derive(Clone, Debug, Hash, PartialEq)] +pub enum SumWithBoxedVariants { + VariantOne(::std::boxed::Box::), + VariantTwo(::std::boxed::Box::), +} + +impl ::std::convert::From:: for crate::data::SumWithBoxedVariants { + fn from(value: crate::data::VariantOne) -> Self { + Self::VariantOne(::std::boxed::Box::new(value)) + } +} + +impl ::std::convert::From:: for crate::data::SumWithBoxedVariants { + fn from(value: crate::data::VariantTwo) -> Self { + Self::VariantTwo(::std::boxed::Box::new(value)) + } +} + #[derive(Clone, Debug, Hash, PartialEq)] pub struct StructWithSum { pub inner: crate::data::SumWithVariants, diff --git a/examples/13-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/13-transient-0/output/rust/src/gen/data/transient_0.rs index 8bf68cb..f2bf149 100644 --- a/examples/13-transient-0/output/rust/src/gen/data/transient_0.rs +++ b/examples/13-transient-0/output/rust/src/gen/data/transient_0.rs @@ -230,6 +230,28 @@ pub fn decode_variant_two(reader: &mut impl std::io::Read, shared_values: &mut : ::std::io::Result::Ok(crate::data::VariantTwo { a: a }) } +pub fn encode_sum_with_boxed_variants(value: &crate::data::SumWithBoxedVariants, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { + match value { + crate::data::SumWithBoxedVariants::VariantOne(value) => { + crate::transient_0::encode_int_32(&0, writer, shared_values)?; + crate::data::transient_0::encode_variant_one(value, writer, shared_values)?; + }, + crate::data::SumWithBoxedVariants::VariantTwo(value) => { + crate::transient_0::encode_int_32(&1, writer, shared_values)?; + crate::data::transient_0::encode_variant_two(value, writer, shared_values)?; + }, + }; + ::std::io::Result::Ok(()) +} + +pub fn decode_sum_with_boxed_variants(reader: &mut impl std::io::Read, shared_values: &mut ::std::vec::Vec::<::std::sync::Arc::>) -> ::std::io::Result:: { + ::std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader, shared_values)? { + 0 => crate::data::SumWithBoxedVariants::VariantOne(::std::boxed::Box::new(crate::data::transient_0::decode_variant_one(reader, shared_values)?)), + 1 => crate::data::SumWithBoxedVariants::VariantTwo(::std::boxed::Box::new(crate::data::transient_0::decode_variant_two(reader, shared_values)?)), + _ => todo!(), + }) +} + pub fn encode_struct_with_sum(value: &crate::data::StructWithSum, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { crate::data::transient_0::encode_sum_with_variants(&value.inner, writer, shared_values)?; crate::transient_0::encode_int_32(&value.b, writer, shared_values)?; -- cgit v1.2.3