summaryrefslogtreecommitdiff
path: root/examples/13-transient-0/output/rust/src/gen
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-31 15:06:36 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-31 15:06:36 +0100
commit904d7f9db65fa5542cdd44b8dd360c271a931cc6 (patch)
treea34aacccbf60af14f092d212d875d51560e2734d /examples/13-transient-0/output/rust/src/gen
parent0a2349963e03a98c1fc3682cdd3cd70c3290011d (diff)
Handle boxed variants in rust-transient-0
Diffstat (limited to 'examples/13-transient-0/output/rust/src/gen')
-rw-r--r--examples/13-transient-0/output/rust/src/gen/data.rs18
-rw-r--r--examples/13-transient-0/output/rust/src/gen/data/transient_0.rs22
2 files changed, 40 insertions, 0 deletions
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
@@ -93,6 +93,24 @@ pub struct VariantTwo {
}
#[derive(Clone, Debug, Hash, PartialEq)]
+pub enum SumWithBoxedVariants {
+ VariantOne(::std::boxed::Box::<crate::data::VariantOne>),
+ VariantTwo(::std::boxed::Box::<crate::data::VariantTwo>),
+}
+
+impl ::std::convert::From::<crate::data::VariantOne> for crate::data::SumWithBoxedVariants {
+ fn from(value: crate::data::VariantOne) -> Self {
+ Self::VariantOne(::std::boxed::Box::new(value))
+ }
+}
+
+impl ::std::convert::From::<crate::data::VariantTwo> 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,
pub b: ::core::primitive::i32,
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::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>>) -> ::std::io::Result::<crate::data::SumWithBoxedVariants> {
+ ::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)?;