summaryrefslogtreecommitdiff
path: root/examples/15-transient-0/output/rust
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-08 17:48:37 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-08 17:48:37 +0100
commit13ddee33304f55788615eb3e330fd07d37093909 (patch)
treeae83fde1f092d101e836b63d3c29d0889f849939 /examples/15-transient-0/output/rust
parent8455bb19b7d4235e667cab9112aa276557969dcc (diff)
Add use of native type to transient-0 example
Diffstat (limited to 'examples/15-transient-0/output/rust')
-rw-r--r--examples/15-transient-0/output/rust/src/data.rs30
-rw-r--r--examples/15-transient-0/output/rust/src/gen/data.rs5
-rw-r--r--examples/15-transient-0/output/rust/src/gen/data/transient_0.rs10
-rw-r--r--examples/15-transient-0/output/rust/src/lib.rs16
4 files changed, 60 insertions, 1 deletions
diff --git a/examples/15-transient-0/output/rust/src/data.rs b/examples/15-transient-0/output/rust/src/data.rs
index 7a0c4fa..6078fd0 100644
--- a/examples/15-transient-0/output/rust/src/data.rs
+++ b/examples/15-transient-0/output/rust/src/data.rs
@@ -1,5 +1,35 @@
include!("./gen/data.rs");
+#[derive(Clone, Debug, Hash, PartialEq)]
+pub struct Native {
+ pub a: i32,
+ pub b: i32,
+}
+
pub mod transient_0 {
+ use ::std::any::Any;
+ use ::std::sync::Arc;
+ use ::std::vec::Vec;
+ use super::Native;
+
include!("./gen/data/transient_0.rs");
+
+ pub fn encode_native(
+ value: &Native,
+ writer: &mut impl std::io::Write,
+ shared_values: &mut ::std::collections::HashMap::<usize, i64>,
+ ) -> std::io::Result<()> {
+ crate::transient_0::encode_int_32(&value.a, writer, shared_values)?;
+ crate::transient_0::encode_int_32(&value.b, writer, shared_values)?;
+ Ok(())
+ }
+
+ pub fn decode_native(
+ reader: &mut impl std::io::Read,
+ shared_values: &mut Vec<Arc::<dyn Any + Sync + Send>>,
+ ) -> std::io::Result<Native> {
+ let a = crate::transient_0::decode_int_32(reader, shared_values)?;
+ let b = crate::transient_0::decode_int_32(reader, shared_values)?;
+ Ok(Native { a, b })
+ }
}
diff --git a/examples/15-transient-0/output/rust/src/gen/data.rs b/examples/15-transient-0/output/rust/src/gen/data.rs
index d4847ec..745bc9d 100644
--- a/examples/15-transient-0/output/rust/src/gen/data.rs
+++ b/examples/15-transient-0/output/rust/src/gen/data.rs
@@ -117,6 +117,11 @@ pub struct StructWithSum {
}
#[derive(Clone, Debug, Hash, PartialEq)]
+pub struct StructWithNative {
+ pub a: crate::data::Native,
+}
+
+#[derive(Clone, Debug, Hash, PartialEq)]
pub struct StructWithBox {
pub inner: ::std::boxed::Box::<crate::data::StructWithInt32>,
}
diff --git a/examples/15-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/15-transient-0/output/rust/src/gen/data/transient_0.rs
index f802163..5ef4811 100644
--- a/examples/15-transient-0/output/rust/src/gen/data/transient_0.rs
+++ b/examples/15-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_native(value: &crate::data::StructWithNative, 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_native(&value.a, writer, shared_values)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_native(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::StructWithNative> {
+ let a = crate::data::transient_0::decode_native(reader, shared_values)?;
+ ::std::io::Result::Ok(crate::data::StructWithNative { a: a })
+}
+
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(())
diff --git a/examples/15-transient-0/output/rust/src/lib.rs b/examples/15-transient-0/output/rust/src/lib.rs
index f0f6e24..22ecdb4 100644
--- a/examples/15-transient-0/output/rust/src/lib.rs
+++ b/examples/15-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, StructWithBox, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
+ use super::data::{EnumWithVariants, Native, StructSingleton, StructWithBool, StructWithBox, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithNative, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
#[test]
fn struct_singleton() {
@@ -229,6 +229,20 @@ mod test {
}
#[test]
+ fn struct_with_native() {
+ let value = StructWithNative {
+ a: Native { a: 10, b: 25 },
+ };
+
+ assert_round_trip_encoding(
+ "StructWithNative",
+ value,
+ super::data::transient_0::encode_struct_with_native,
+ super::data::transient_0::decode_struct_with_native,
+ );
+ }
+
+ #[test]
fn struct_with_box() {
let value = StructWithBox {
inner: Box::new(StructWithInt32 { a: 10, b: 25 }),