From 1fd5e5b3e6df869c6b48f8ce3b60078311a4a9ea Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 9 Aug 2026 10:27:45 +0100 Subject: Support generic native types in rust-transient-0 --- examples/15-transient-0/output/rust/src/data.rs | 36 ++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'examples/15-transient-0/output/rust/src/data.rs') diff --git a/examples/15-transient-0/output/rust/src/data.rs b/examples/15-transient-0/output/rust/src/data.rs index 2cf748b..cc0eb13 100644 --- a/examples/15-transient-0/output/rust/src/data.rs +++ b/examples/15-transient-0/output/rust/src/data.rs @@ -17,7 +17,7 @@ pub mod transient_0 { use ::std::any::Any; use ::std::sync::Arc; use ::std::vec::Vec; - use super::Native; + use super::{GenericNative, Native}; include!("./gen/data/transient_0.rs"); @@ -39,4 +39,38 @@ pub mod transient_0 { let b = crate::transient_0::decode_int_32(reader, shared_values)?; Ok(Native { a, b }) } + + type Encode = fn( + &T, + &mut TWrite, + &mut ::std::collections::HashMap::, + ) -> std::io::Result<()>; + + type Decode = fn( + &mut TRead, + &mut Vec>, + ) -> std::io::Result; + + pub fn encode_generic_native( + value: &GenericNative, + writer: &mut TWrite, + shared_values: &mut ::std::collections::HashMap::, + encode_a: Encode, + encode_b: Encode, + ) -> std::io::Result<()> { + encode_a(&value.a, writer, shared_values)?; + encode_b(&value.b, writer, shared_values)?; + Ok(()) + } + + pub fn decode_generic_native( + reader: &mut TRead, + shared_values: &mut Vec>, + decode_a: Decode, + decode_b: Decode, + ) -> std::io::Result> { + let a = decode_a(reader, shared_values)?; + let b = decode_b(reader, shared_values)?; + Ok(GenericNative { a, b }) + } } -- cgit v1.2.3