summaryrefslogtreecommitdiff
path: root/examples/14-transient-0/output/rust
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-01 09:24:12 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-01 09:24:12 +0100
commit6b4d2a11537282947dc71a646c168ea1343d6a52 (patch)
tree091de7d0a71dda3779a13f14f221a0751552868e /examples/14-transient-0/output/rust
parent4524a8a16574887bfdb0ee66984709c8158470a6 (diff)
Support Box in transient-0
Diffstat (limited to 'examples/14-transient-0/output/rust')
-rw-r--r--examples/14-transient-0/output/rust/src/gen/data.rs5
-rw-r--r--examples/14-transient-0/output/rust/src/gen/data/transient_0.rs10
-rw-r--r--examples/14-transient-0/output/rust/src/lib.rs16
3 files changed, 30 insertions, 1 deletions
diff --git a/examples/14-transient-0/output/rust/src/gen/data.rs b/examples/14-transient-0/output/rust/src/gen/data.rs
index 77bcbe8..d4847ec 100644
--- a/examples/14-transient-0/output/rust/src/gen/data.rs
+++ b/examples/14-transient-0/output/rust/src/gen/data.rs
@@ -117,6 +117,11 @@ pub struct StructWithSum {
}
#[derive(Clone, Debug, Hash, PartialEq)]
+pub struct StructWithBox {
+ pub inner: ::std::boxed::Box::<crate::data::StructWithInt32>,
+}
+
+#[derive(Clone, Debug, Hash, PartialEq)]
pub struct StructWithListOfShared {
pub inner: ::std::vec::Vec::<::std::sync::Arc::<crate::data::StructWithInt32>>,
}
diff --git a/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs
index f2bf149..0c8efd3 100644
--- a/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs
+++ b/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs
@@ -264,6 +264,16 @@ pub fn decode_struct_with_sum(reader: &mut impl std::io::Read, shared_values: &m
::std::io::Result::Ok(crate::data::StructWithSum { inner: inner, b: b })
}
+pub fn encode_struct_with_box(value: &crate::data::StructWithBox, 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_struct_with_int_32((&value.inner).as_ref(), writer, shared_values)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_box(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::StructWithBox> {
+ let inner = ::std::boxed::Box::new(crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?);
+ ::std::io::Result::Ok(crate::data::StructWithBox { inner: inner })
+}
+
pub fn encode_struct_with_list_of_shared(value: &crate::data::StructWithListOfShared, 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_int_64(&(((&value.inner).len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer, shared_values)?;
diff --git a/examples/14-transient-0/output/rust/src/lib.rs b/examples/14-transient-0/output/rust/src/lib.rs
index df50cae..f0f6e24 100644
--- a/examples/14-transient-0/output/rust/src/lib.rs
+++ b/examples/14-transient-0/output/rust/src/lib.rs
@@ -8,7 +8,7 @@ mod test {
use std::path::PathBuf;
use std::sync::Arc;
use std::collections::HashMap;
- use super::data::{EnumWithVariants, StructSingleton, StructWithBool, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
+ use super::data::{EnumWithVariants, StructSingleton, StructWithBool, StructWithBox, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
#[test]
fn struct_singleton() {
@@ -229,6 +229,20 @@ mod test {
}
#[test]
+ fn struct_with_box() {
+ let value = StructWithBox {
+ inner: Box::new(StructWithInt32 { a: 10, b: 25 }),
+ };
+
+ assert_round_trip_encoding(
+ "StructWithBox",
+ value,
+ super::data::transient_0::encode_struct_with_box,
+ super::data::transient_0::decode_struct_with_box,
+ );
+ }
+
+ #[test]
fn struct_with_list_of_shared() {
let a = Arc::new(StructWithInt32 { a: 10, b: 25 });
let b = Arc::new(StructWithInt32 { a: 42, b: 47 });