summaryrefslogtreecommitdiff
path: root/examples/11-transient-0/output/rust/src/gen
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-24 17:59:45 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-24 17:59:45 +0100
commit2bc23bdc7fe01fc5921be8e09f405a8a1fd7bd65 (patch)
tree9df07f8aeba21f4fb91e23fcc8d1c7a4a57a42eb /examples/11-transient-0/output/rust/src/gen
parentc8baf035c5a1705b957931f56f9162125803e554 (diff)
Add Shared type
Diffstat (limited to 'examples/11-transient-0/output/rust/src/gen')
-rw-r--r--examples/11-transient-0/output/rust/src/gen/data.rs90
-rw-r--r--examples/11-transient-0/output/rust/src/gen/data/transient_0.rs223
-rw-r--r--examples/11-transient-0/output/rust/src/gen/transient_0.rs70
3 files changed, 383 insertions, 0 deletions
diff --git a/examples/11-transient-0/output/rust/src/gen/data.rs b/examples/11-transient-0/output/rust/src/gen/data.rs
new file mode 100644
index 0000000..0ea6c0f
--- /dev/null
+++ b/examples/11-transient-0/output/rust/src/gen/data.rs
@@ -0,0 +1,90 @@
+// Generated by hobgoblin.
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithBool {
+ pub a: ::core::primitive::bool,
+ pub b: ::core::primitive::bool,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithInt32 {
+ pub a: ::core::primitive::i32,
+ pub b: ::core::primitive::i32,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithInt64 {
+ pub a: ::core::primitive::i64,
+ pub b: ::core::primitive::i64,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithString {
+ pub a: ::std::string::String,
+ pub b: ::std::string::String,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithStruct {
+ pub inner: crate::data::StructWithInt32,
+ pub c: ::core::primitive::i32,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithList {
+ pub a: ::std::vec::Vec::<::core::primitive::i64>,
+ pub b: ::std::vec::Vec::<crate::data::StructWithInt32>,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithOption {
+ pub a: ::std::option::Option::<::core::primitive::i64>,
+ pub b: ::std::option::Option::<crate::data::StructWithInt32>,
+}
+
+#[derive(Debug, PartialEq)]
+pub enum EnumWithVariants {
+ Zero,
+ One,
+ Two,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithEnum {
+ pub inner: crate::data::EnumWithVariants,
+ pub c: ::core::primitive::i32,
+}
+
+#[derive(Debug, PartialEq)]
+pub enum SumWithVariants {
+ VariantOne(crate::data::VariantOne),
+ VariantTwo(crate::data::VariantTwo),
+}
+
+impl ::std::convert::From::<crate::data::VariantOne> for crate::data::SumWithVariants {
+ fn from(value: crate::data::VariantOne) -> Self {
+ Self::VariantOne(value)
+ }
+}
+
+impl ::std::convert::From::<crate::data::VariantTwo> for crate::data::SumWithVariants {
+ fn from(value: crate::data::VariantTwo) -> Self {
+ Self::VariantTwo(value)
+ }
+}
+
+#[derive(Debug, PartialEq)]
+pub struct VariantOne {
+ pub a: ::core::primitive::i32,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct VariantTwo {
+ pub a: ::core::primitive::i64,
+}
+
+#[derive(Debug, PartialEq)]
+pub struct StructWithSum {
+ pub inner: crate::data::SumWithVariants,
+ pub b: ::core::primitive::i32,
+}
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
new file mode 100644
index 0000000..82fb5f7
--- /dev/null
+++ b/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs
@@ -0,0 +1,223 @@
+// Generated by hobgoblin.
+
+pub fn encode_struct_with_bool(value: &crate::data::StructWithBool, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_bool(&value.a, writer)?;
+ crate::transient_0::encode_bool(&value.b, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_bool(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithBool> {
+ let a = crate::transient_0::decode_bool(reader)?;
+ let b = crate::transient_0::decode_bool(reader)?;
+ std::io::Result::Ok(crate::data::StructWithBool { a: a, b: b })
+}
+
+pub fn encode_struct_with_int_32(value: &crate::data::StructWithInt32, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_int_32(&value.a, writer)?;
+ crate::transient_0::encode_int_32(&value.b, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_int_32(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithInt32> {
+ let a = crate::transient_0::decode_int_32(reader)?;
+ let b = crate::transient_0::decode_int_32(reader)?;
+ 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) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_int_64(&value.a, writer)?;
+ crate::transient_0::encode_int_64(&value.b, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_int_64(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithInt64> {
+ let a = crate::transient_0::decode_int_64(reader)?;
+ let b = crate::transient_0::decode_int_64(reader)?;
+ 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) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_string(&value.a, writer)?;
+ crate::transient_0::encode_string(&value.b, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_string(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithString> {
+ let a = crate::transient_0::decode_string(reader)?;
+ let b = crate::transient_0::decode_string(reader)?;
+ 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) -> ::std::io::Result::<()> {
+ crate::data::transient_0::encode_struct_with_int_32(&value.inner, writer)?;
+ crate::transient_0::encode_int_32(&value.c, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_struct(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithStruct> {
+ let inner = crate::data::transient_0::decode_struct_with_int_32(reader)?;
+ let c = crate::transient_0::decode_int_32(reader)?;
+ 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) -> ::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)?;
+ for element in &value.a {
+ crate::transient_0::encode_int_64(element, writer)?;
+ };
+ };
+ {
+ crate::transient_0::encode_int_64(&(((&value.b).len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer)?;
+ for element in &value.b {
+ crate::data::transient_0::encode_struct_with_int_32(element, writer)?;
+ };
+ };
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_list(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithList> {
+ let a = {
+ let len = crate::transient_0::decode_int_64(reader)?;
+ 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)?);
+ };
+ elements
+ };
+ let b = {
+ let len = crate::transient_0::decode_int_64(reader)?;
+ 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)?);
+ };
+ 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) -> ::std::io::Result::<()> {
+ match &value.a {
+ ::std::option::Option::Some(value) => {
+ crate::transient_0::encode_bool(&true, writer)?;
+ crate::transient_0::encode_int_64(&value, writer)?;
+ },
+ ::std::option::Option::None => {
+ crate::transient_0::encode_bool(&false, writer)?;
+ },
+ };
+ match &value.b {
+ ::std::option::Option::Some(value) => {
+ crate::transient_0::encode_bool(&true, writer)?;
+ crate::data::transient_0::encode_struct_with_int_32(&value, writer)?;
+ },
+ ::std::option::Option::None => {
+ crate::transient_0::encode_bool(&false, writer)?;
+ },
+ };
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_option(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithOption> {
+ let a = {
+ let is_some = crate::transient_0::decode_bool(reader)?;
+ if is_some {
+ ::std::option::Option::Some(crate::transient_0::decode_int_64(reader)?)
+ } else {
+ ::std::option::Option::None
+ }
+ };
+ let b = {
+ let is_some = crate::transient_0::decode_bool(reader)?;
+ if is_some {
+ ::std::option::Option::Some(crate::data::transient_0::decode_struct_with_int_32(reader)?)
+ } 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) -> ::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)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_enum_with_variants(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::EnumWithVariants> {
+ std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader)? {
+ 0 => crate::data::EnumWithVariants::Zero,
+ 1 => crate::data::EnumWithVariants::One,
+ 2 => crate::data::EnumWithVariants::Two,
+ _ => todo!(),
+ })
+}
+
+pub fn encode_struct_with_enum(value: &crate::data::StructWithEnum, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ crate::data::transient_0::encode_enum_with_variants(&value.inner, writer)?;
+ crate::transient_0::encode_int_32(&value.c, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_enum(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithEnum> {
+ let inner = crate::data::transient_0::decode_enum_with_variants(reader)?;
+ let c = crate::transient_0::decode_int_32(reader)?;
+ 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) -> ::std::io::Result::<()> {
+ match value {
+ crate::data::SumWithVariants::VariantOne(value) => {
+ crate::transient_0::encode_int_32(&0, writer)?;
+ crate::data::transient_0::encode_variant_one(value, writer)?;
+ },
+ crate::data::SumWithVariants::VariantTwo(value) => {
+ crate::transient_0::encode_int_32(&1, writer)?;
+ crate::data::transient_0::encode_variant_two(value, writer)?;
+ },
+ };
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_sum_with_variants(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::SumWithVariants> {
+ std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader)? {
+ 0 => crate::data::SumWithVariants::VariantOne(crate::data::transient_0::decode_variant_one(reader)?),
+ 1 => crate::data::SumWithVariants::VariantTwo(crate::data::transient_0::decode_variant_two(reader)?),
+ _ => todo!(),
+ })
+}
+
+pub fn encode_variant_one(value: &crate::data::VariantOne, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_int_32(&value.a, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_variant_one(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::VariantOne> {
+ let a = crate::transient_0::decode_int_32(reader)?;
+ std::io::Result::Ok(crate::data::VariantOne { a: a })
+}
+
+pub fn encode_variant_two(value: &crate::data::VariantTwo, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_int_64(&value.a, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_variant_two(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::VariantTwo> {
+ let a = crate::transient_0::decode_int_64(reader)?;
+ std::io::Result::Ok(crate::data::VariantTwo { a: a })
+}
+
+pub fn encode_struct_with_sum(value: &crate::data::StructWithSum, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ crate::data::transient_0::encode_sum_with_variants(&value.inner, writer)?;
+ crate::transient_0::encode_int_32(&value.b, writer)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_sum(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithSum> {
+ let inner = crate::data::transient_0::decode_sum_with_variants(reader)?;
+ let b = crate::transient_0::decode_int_32(reader)?;
+ std::io::Result::Ok(crate::data::StructWithSum { inner: inner, b: b })
+}
diff --git a/examples/11-transient-0/output/rust/src/gen/transient_0.rs b/examples/11-transient-0/output/rust/src/gen/transient_0.rs
new file mode 100644
index 0000000..560fe51
--- /dev/null
+++ b/examples/11-transient-0/output/rust/src/gen/transient_0.rs
@@ -0,0 +1,70 @@
+// Generated by hobgoblin.
+
+pub fn encode_bool(value: &::core::primitive::bool, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ if *value {
+ writer.write_all(&1u8.to_le_bytes())?;
+ } else {
+ writer.write_all(&0u8.to_le_bytes())?;
+ };
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_bool(reader: &mut impl std::io::Read) -> ::std::io::Result::<::core::primitive::bool> {
+ let int_value = {
+ let bytes = {
+ let mut bytes = [0; 1];
+ reader.read_exact(&mut bytes)?;
+ bytes
+ };
+ u8::from_le_bytes(bytes)
+ };
+ std::io::Result::Ok(if int_value == 0 {
+ false
+ } else {
+ true
+ })
+}
+
+pub fn encode_int_32(value: &::core::primitive::i32, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ writer.write_all(&value.to_le_bytes())?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_int_32(reader: &mut impl std::io::Read) -> ::std::io::Result::<::core::primitive::i32> {
+ let bytes = {
+ let mut bytes = [0; 4];
+ reader.read_exact(&mut bytes)?;
+ bytes
+ };
+ std::io::Result::Ok(::core::primitive::i32::from_le_bytes(bytes))
+}
+
+pub fn encode_int_64(value: &::core::primitive::i64, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ writer.write_all(&value.to_le_bytes())?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_int_64(reader: &mut impl std::io::Read) -> ::std::io::Result::<::core::primitive::i64> {
+ let bytes = {
+ let mut bytes = [0; 8];
+ reader.read_exact(&mut bytes)?;
+ bytes
+ };
+ std::io::Result::Ok(::core::primitive::i64::from_le_bytes(bytes))
+}
+
+pub fn encode_string(value: &::std::string::String, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_int_64(&((value.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer)?;
+ writer.write_all(value.as_bytes())?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_string(reader: &mut impl std::io::Read) -> ::std::io::Result::<::std::string::String> {
+ let len = crate::transient_0::decode_int_64(reader)?;
+ let bytes = {
+ let mut bytes = vec![0u8; (len.try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?];
+ reader.read_exact(&mut bytes)?;
+ bytes
+ };
+ std::io::Result::Ok((::std::string::String::from_utf8(bytes)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?)
+}