diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-05 18:44:26 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-05 18:44:26 +0100 |
| commit | 8455bb19b7d4235e667cab9112aa276557969dcc (patch) | |
| tree | 3ad5a7cf2941c4918f9e6de612a711cd8846570f /examples/14-transient-0/output/rust/src/gen/data | |
| parent | 266e826749b62c46e14d9590351f8c3b2de53512 (diff) | |
Type check generic native types
Diffstat (limited to 'examples/14-transient-0/output/rust/src/gen/data')
| -rw-r--r-- | examples/14-transient-0/output/rust/src/gen/data/transient_0.rs | 455 |
1 files changed, 0 insertions, 455 deletions
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 deleted file mode 100644 index f802163..0000000 --- a/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs +++ /dev/null @@ -1,455 +0,0 @@ -// Generated by hobgoblin. - -pub fn encode_struct_singleton(value: &crate::data::StructSingleton, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_singleton(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::StructSingleton> { - ::std::io::Result::Ok(crate::data::StructSingleton) -} - -pub fn encode_struct_with_bool(value: &crate::data::StructWithBool, 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_bool(&value.a, writer, shared_values)?; - crate::transient_0::encode_bool(&value.b, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_bool(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::StructWithBool> { - let a = crate::transient_0::decode_bool(reader, shared_values)?; - let b = crate::transient_0::decode_bool(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::StructWithBool { a: a, b: b }) -} - -pub fn encode_struct_with_int_8(value: &crate::data::StructWithInt8, 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_8(&value.a, writer, shared_values)?; - crate::transient_0::encode_int_8(&value.b, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_int_8(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::StructWithInt8> { - let a = crate::transient_0::decode_int_8(reader, shared_values)?; - let b = crate::transient_0::decode_int_8(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::StructWithInt8 { a: a, b: b }) -} - -pub fn encode_struct_with_int_32(value: &crate::data::StructWithInt32, 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_32(&value.a, writer, shared_values)?; - crate::transient_0::encode_int_32(&value.b, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_int_32(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::StructWithInt32> { - let a = crate::transient_0::decode_int_32(reader, shared_values)?; - let b = crate::transient_0::decode_int_32(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::StructWithInt32 { a: a, b: b }) -} - -pub fn encode_struct_with_int_64(value: &crate::data::StructWithInt64, 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.a, writer, shared_values)?; - crate::transient_0::encode_int_64(&value.b, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_int_64(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::StructWithInt64> { - let a = crate::transient_0::decode_int_64(reader, shared_values)?; - let b = crate::transient_0::decode_int_64(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::StructWithInt64 { a: a, b: b }) -} - -pub fn encode_struct_with_string(value: &crate::data::StructWithString, 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_string(&value.a, writer, shared_values)?; - crate::transient_0::encode_string(&value.b, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_string(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::StructWithString> { - let a = crate::transient_0::decode_string(reader, shared_values)?; - let b = crate::transient_0::decode_string(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::StructWithString { a: a, b: b }) -} - -pub fn encode_struct_with_struct(value: &crate::data::StructWithStruct, 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, writer, shared_values)?; - crate::transient_0::encode_int_32(&value.c, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_struct(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::StructWithStruct> { - let inner = crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?; - let c = crate::transient_0::decode_int_32(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::StructWithStruct { inner: inner, c: c }) -} - -pub fn encode_struct_with_list(value: &crate::data::StructWithList, 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.a).len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer, shared_values)?; - for element in &value.a { - crate::transient_0::encode_int_64(element, writer, shared_values)?; - }; - }; - { - crate::transient_0::encode_int_64(&(((&value.b).len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer, shared_values)?; - for element in &value.b { - crate::data::transient_0::encode_struct_with_int_32(element, writer, shared_values)?; - }; - }; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_list(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::StructWithList> { - let a = { - let len = crate::transient_0::decode_int_64(reader, shared_values)?; - let mut elements = ::std::vec::Vec::with_capacity((len.try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?); - for _ in 0..len { - elements.push(crate::transient_0::decode_int_64(reader, shared_values)?); - }; - elements - }; - let b = { - let len = crate::transient_0::decode_int_64(reader, shared_values)?; - let mut elements = ::std::vec::Vec::with_capacity((len.try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?); - for _ in 0..len { - elements.push(crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?); - }; - elements - }; - ::std::io::Result::Ok(crate::data::StructWithList { a: a, b: b }) -} - -pub fn encode_struct_with_option(value: &crate::data::StructWithOption, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { - match &value.a { - ::std::option::Option::Some(value) => { - crate::transient_0::encode_bool(&true, writer, shared_values)?; - crate::transient_0::encode_int_64(&value, writer, shared_values)?; - }, - ::std::option::Option::None => { - crate::transient_0::encode_bool(&false, writer, shared_values)?; - }, - }; - match &value.b { - ::std::option::Option::Some(value) => { - crate::transient_0::encode_bool(&true, writer, shared_values)?; - crate::data::transient_0::encode_struct_with_int_32(&value, writer, shared_values)?; - }, - ::std::option::Option::None => { - crate::transient_0::encode_bool(&false, writer, shared_values)?; - }, - }; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_option(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::StructWithOption> { - let a = { - let is_some = crate::transient_0::decode_bool(reader, shared_values)?; - if is_some { - ::std::option::Option::Some(crate::transient_0::decode_int_64(reader, shared_values)?) - } else { - ::std::option::Option::None - } - }; - let b = { - let is_some = crate::transient_0::decode_bool(reader, shared_values)?; - if is_some { - ::std::option::Option::Some(crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?) - } else { - ::std::option::Option::None - } - }; - ::std::io::Result::Ok(crate::data::StructWithOption { a: a, b: b }) -} - -pub fn encode_enum_with_variants(value: &crate::data::EnumWithVariants, 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_32(&match value { - crate::data::EnumWithVariants::Zero => 0, - crate::data::EnumWithVariants::One => 1, - crate::data::EnumWithVariants::Two => 2, - }, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_enum_with_variants(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::EnumWithVariants> { - ::std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader, shared_values)? { - 0 => crate::data::EnumWithVariants::Zero, - 1 => crate::data::EnumWithVariants::One, - 2 => crate::data::EnumWithVariants::Two, - _ => ::std::result::Result::Err(::std::io::Error::new(::std::io::ErrorKind::InvalidData, "unrecognised variant tag for data.EnumWithVariants"))?, - }) -} - -pub fn encode_struct_with_enum(value: &crate::data::StructWithEnum, 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_enum_with_variants(&value.inner, writer, shared_values)?; - crate::transient_0::encode_int_32(&value.c, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_enum(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::StructWithEnum> { - let inner = crate::data::transient_0::decode_enum_with_variants(reader, shared_values)?; - let c = crate::transient_0::decode_int_32(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::StructWithEnum { inner: inner, c: c }) -} - -pub fn encode_sum_with_variants(value: &crate::data::SumWithVariants, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { - match value { - crate::data::SumWithVariants::VariantOne(value) => { - crate::transient_0::encode_int_32(&0, writer, shared_values)?; - crate::data::transient_0::encode_variant_one(value, writer, shared_values)?; - }, - crate::data::SumWithVariants::VariantTwo(value) => { - crate::transient_0::encode_int_32(&1, writer, shared_values)?; - crate::data::transient_0::encode_variant_two(value, writer, shared_values)?; - }, - }; - ::std::io::Result::Ok(()) -} - -pub fn decode_sum_with_variants(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::SumWithVariants> { - ::std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader, shared_values)? { - 0 => crate::data::SumWithVariants::VariantOne(crate::data::transient_0::decode_variant_one(reader, shared_values)?), - 1 => crate::data::SumWithVariants::VariantTwo(crate::data::transient_0::decode_variant_two(reader, shared_values)?), - _ => ::std::result::Result::Err(::std::io::Error::new(::std::io::ErrorKind::InvalidData, "unrecognised variant tag for data.SumWithVariants"))?, - }) -} - -pub fn encode_variant_one(value: &crate::data::VariantOne, 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_32(&value.a, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_variant_one(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::VariantOne> { - let a = crate::transient_0::decode_int_32(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::VariantOne { a: a }) -} - -pub fn encode_variant_two(value: &crate::data::VariantTwo, 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.a, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_variant_two(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::VariantTwo> { - let a = crate::transient_0::decode_int_64(reader, shared_values)?; - ::std::io::Result::Ok(crate::data::VariantTwo { a: a }) -} - -pub fn encode_sum_with_boxed_variants(value: &crate::data::SumWithBoxedVariants, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { - match value { - crate::data::SumWithBoxedVariants::VariantOne(value) => { - crate::transient_0::encode_int_32(&0, writer, shared_values)?; - crate::data::transient_0::encode_variant_one(value.as_ref(), writer, shared_values)?; - }, - crate::data::SumWithBoxedVariants::VariantTwo(value) => { - crate::transient_0::encode_int_32(&1, writer, shared_values)?; - crate::data::transient_0::encode_variant_two(value.as_ref(), writer, shared_values)?; - }, - }; - ::std::io::Result::Ok(()) -} - -pub fn decode_sum_with_boxed_variants(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::SumWithBoxedVariants> { - ::std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader, shared_values)? { - 0 => crate::data::SumWithBoxedVariants::VariantOne(::std::boxed::Box::new(crate::data::transient_0::decode_variant_one(reader, shared_values)?)), - 1 => crate::data::SumWithBoxedVariants::VariantTwo(::std::boxed::Box::new(crate::data::transient_0::decode_variant_two(reader, shared_values)?)), - _ => ::std::result::Result::Err(::std::io::Error::new(::std::io::ErrorKind::InvalidData, "unrecognised variant tag for data.SumWithBoxedVariants"))?, - }) -} - -pub fn encode_struct_with_sum(value: &crate::data::StructWithSum, 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_sum_with_variants(&value.inner, writer, shared_values)?; - crate::transient_0::encode_int_32(&value.b, writer, shared_values)?; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_sum(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::StructWithSum> { - let inner = crate::data::transient_0::decode_sum_with_variants(reader, shared_values)?; - let b = crate::transient_0::decode_int_32(reader, shared_values)?; - ::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)?; - for element in &value.inner { - { - let ptr = ::std::sync::Arc::as_ptr(&element) as ::core::primitive::usize; - match (shared_values.get(&ptr)).copied() { - ::std::option::Option::Some(id) => { - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - }, - ::std::option::Option::None => { - let id = ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?; - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - shared_values.insert(ptr, id); - crate::data::transient_0::encode_struct_with_int_32(element.as_ref(), writer, shared_values)?; - }, - }; - }; - }; - }; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_list_of_shared(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::StructWithListOfShared> { - let inner = { - let len = crate::transient_0::decode_int_64(reader, shared_values)?; - let mut elements = ::std::vec::Vec::with_capacity((len.try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?); - for _ in 0..len { - elements.push({ - let id = crate::transient_0::decode_int_64(reader, shared_values)?; - if id < ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))? { - ((::std::sync::Arc::clone(&shared_values[(::core::primitive::usize::try_from(id)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?])).downcast()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, "referenced value has wrong type"))? - } else { - let decoded_value = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?); - shared_values.push(::std::sync::Arc::clone(&decoded_value) as ::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>); - decoded_value - } - }); - }; - elements - }; - ::std::io::Result::Ok(crate::data::StructWithListOfShared { inner: inner }) -} - -pub fn encode_struct_with_different_shared_types(value: &crate::data::StructWithDifferentSharedTypes, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { - { - let ptr = ::std::sync::Arc::as_ptr(&&value.a) as ::core::primitive::usize; - match (shared_values.get(&ptr)).copied() { - ::std::option::Option::Some(id) => { - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - }, - ::std::option::Option::None => { - let id = ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?; - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - shared_values.insert(ptr, id); - crate::data::transient_0::encode_struct_with_int_32((&value.a).as_ref(), writer, shared_values)?; - }, - }; - }; - { - let ptr = ::std::sync::Arc::as_ptr(&&value.b) as ::core::primitive::usize; - match (shared_values.get(&ptr)).copied() { - ::std::option::Option::Some(id) => { - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - }, - ::std::option::Option::None => { - let id = ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?; - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - shared_values.insert(ptr, id); - crate::data::transient_0::encode_struct_with_int_64((&value.b).as_ref(), writer, shared_values)?; - }, - }; - }; - { - let ptr = ::std::sync::Arc::as_ptr(&&value.c) as ::core::primitive::usize; - match (shared_values.get(&ptr)).copied() { - ::std::option::Option::Some(id) => { - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - }, - ::std::option::Option::None => { - let id = ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?; - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - shared_values.insert(ptr, id); - crate::data::transient_0::encode_struct_with_int_32((&value.c).as_ref(), writer, shared_values)?; - }, - }; - }; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_different_shared_types(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::StructWithDifferentSharedTypes> { - let a = { - let id = crate::transient_0::decode_int_64(reader, shared_values)?; - if id < ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))? { - ((::std::sync::Arc::clone(&shared_values[(::core::primitive::usize::try_from(id)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?])).downcast()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, "referenced value has wrong type"))? - } else { - let decoded_value = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?); - shared_values.push(::std::sync::Arc::clone(&decoded_value) as ::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>); - decoded_value - } - }; - let b = { - let id = crate::transient_0::decode_int_64(reader, shared_values)?; - if id < ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))? { - ((::std::sync::Arc::clone(&shared_values[(::core::primitive::usize::try_from(id)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?])).downcast()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, "referenced value has wrong type"))? - } else { - let decoded_value = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_64(reader, shared_values)?); - shared_values.push(::std::sync::Arc::clone(&decoded_value) as ::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>); - decoded_value - } - }; - let c = { - let id = crate::transient_0::decode_int_64(reader, shared_values)?; - if id < ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))? { - ((::std::sync::Arc::clone(&shared_values[(::core::primitive::usize::try_from(id)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?])).downcast()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, "referenced value has wrong type"))? - } else { - let decoded_value = ::std::sync::Arc::new(crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?); - shared_values.push(::std::sync::Arc::clone(&decoded_value) as ::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>); - decoded_value - } - }; - ::std::io::Result::Ok(crate::data::StructWithDifferentSharedTypes { a: a, b: b, c: c }) -} - -pub fn encode_struct_with_shared_sum_and_variant(value: &crate::data::StructWithSharedSumAndVariant, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> { - { - let ptr = ::std::sync::Arc::as_ptr(&&value.a) as ::core::primitive::usize; - match (shared_values.get(&ptr)).copied() { - ::std::option::Option::Some(id) => { - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - }, - ::std::option::Option::None => { - let id = ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?; - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - shared_values.insert(ptr, id); - crate::data::transient_0::encode_sum_with_variants((&value.a).as_ref(), writer, shared_values)?; - }, - }; - }; - { - let ptr = ::std::sync::Arc::as_ptr(&&value.b) as ::core::primitive::usize; - match (shared_values.get(&ptr)).copied() { - ::std::option::Option::Some(id) => { - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - }, - ::std::option::Option::None => { - let id = ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?; - crate::transient_0::encode_int_64(&id, writer, shared_values)?; - shared_values.insert(ptr, id); - crate::data::transient_0::encode_variant_one((&value.b).as_ref(), writer, shared_values)?; - }, - }; - }; - ::std::io::Result::Ok(()) -} - -pub fn decode_struct_with_shared_sum_and_variant(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::StructWithSharedSumAndVariant> { - let a = { - let id = crate::transient_0::decode_int_64(reader, shared_values)?; - if id < ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))? { - ((::std::sync::Arc::clone(&shared_values[(::core::primitive::usize::try_from(id)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?])).downcast()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, "referenced value has wrong type"))? - } else { - let decoded_value = ::std::sync::Arc::new(crate::data::transient_0::decode_sum_with_variants(reader, shared_values)?); - shared_values.push(::std::sync::Arc::clone(&decoded_value) as ::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>); - decoded_value - } - }; - let b = { - let id = crate::transient_0::decode_int_64(reader, shared_values)?; - if id < ((shared_values.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))? { - ((::std::sync::Arc::clone(&shared_values[(::core::primitive::usize::try_from(id)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?])).downcast()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, "referenced value has wrong type"))? - } else { - let decoded_value = ::std::sync::Arc::new(crate::data::transient_0::decode_variant_one(reader, shared_values)?); - shared_values.push(::std::sync::Arc::clone(&decoded_value) as ::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>); - decoded_value - } - }; - ::std::io::Result::Ok(crate::data::StructWithSharedSumAndVariant { a: a, b: b }) -} |
