include!("./gen/data.rs"); #[derive(Clone, Debug, Hash, PartialEq)] pub struct Native { pub a: i32, pub b: i32, } #[derive(Clone, Debug, Hash, PartialEq)] pub struct GenericNative { pub a: A, pub b: B, } pub mod transient_0 { use ::std::any::Any; use ::std::sync::Arc; use ::std::vec::Vec; use super::{GenericNative, 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::, ) -> 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>, ) -> std::io::Result { 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 }) } 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 }) } }