diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-24 23:04:36 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-24 23:04:36 +0100 |
| commit | d145fa46f2571d530d55937cf7907cced0a30347 (patch) | |
| tree | 0d71fa29e6d07a4f449031ee1a1a163a5b4b818e /examples | |
| parent | 6b3ca8e95a46fbf6f4d9bc5b4214386dd221c69c (diff) | |
Support Shared in rust-transient-0
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/11-transient-0/output/rust/src/gen/data/transient_0.rs | 4 | ||||
| -rw-r--r-- | examples/11-transient-0/output/rust/src/lib.rs | 14 |
2 files changed, 15 insertions, 3 deletions
diff --git a/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs index 12f69e8..52ae7e1 100644 --- a/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs +++ b/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs @@ -223,11 +223,11 @@ pub fn decode_struct_with_sum(reader: &mut impl std::io::Read) -> ::std::io::Res } pub fn encode_struct_with_shared(value: &crate::data::StructWithShared, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { - todo!(); + crate::data::transient_0::encode_struct_with_int_32((&value.inner).as_ref(), writer)?; ::std::io::Result::Ok(()) } pub fn decode_struct_with_shared(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithShared> { - let inner = todo!(); + let inner = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_32(reader)?); std::io::Result::Ok(crate::data::StructWithShared { inner: inner }) } diff --git a/examples/11-transient-0/output/rust/src/lib.rs b/examples/11-transient-0/output/rust/src/lib.rs index e31e1fb..6368af2 100644 --- a/examples/11-transient-0/output/rust/src/lib.rs +++ b/examples/11-transient-0/output/rust/src/lib.rs @@ -4,7 +4,8 @@ pub mod transient_0; #[cfg(test)] mod test { use std::io::Cursor; - use super::data::{EnumWithVariants, StructWithBool, StructWithEnum, StructWithInt32, StructWithInt64, StructWithList, StructWithOption, StructWithString, StructWithStruct, StructWithSum, SumWithVariants, VariantOne, VariantTwo }; + use std::sync::Arc; + use super::data::{EnumWithVariants, StructWithBool, StructWithEnum, StructWithInt32, StructWithInt64, StructWithList, StructWithOption, StructWithShared, StructWithString, StructWithStruct, StructWithSum, SumWithVariants, VariantOne, VariantTwo }; #[test] fn struct_with_bool() { @@ -168,6 +169,17 @@ mod test { ); } + #[test] + fn struct_with_shared() { + let value = StructWithShared { inner: Arc::new(StructWithInt32 { a: 10, b: 25 }) }; + + assert_round_trip_encoding( + value, + super::data::transient_0::encode_struct_with_shared, + super::data::transient_0::decode_struct_with_shared, + ); + } + fn assert_round_trip_encoding<T: std::cmp::PartialEq + std::fmt::Debug>( value: T, encode: impl Fn(&T, &mut Cursor<Vec<u8>>) -> std::io::Result<()>, |
