summaryrefslogtreecommitdiff
path: root/examples/10-transient-0/output/rust/src
diff options
context:
space:
mode:
Diffstat (limited to 'examples/10-transient-0/output/rust/src')
-rw-r--r--examples/10-transient-0/output/rust/src/gen/data/transient_0.rs18
-rw-r--r--examples/10-transient-0/output/rust/src/lib.rs23
2 files changed, 40 insertions, 1 deletions
diff --git a/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs
index c5bb458..fbfc82d 100644
--- a/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs
+++ b/examples/10-transient-0/output/rust/src/gen/data/transient_0.rs
@@ -152,6 +152,24 @@ pub fn decode_struct_with_option(reader: &mut impl std::io::Read) -> ::std::io::
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_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(())
diff --git a/examples/10-transient-0/output/rust/src/lib.rs b/examples/10-transient-0/output/rust/src/lib.rs
index 3de2597..c3da14c 100644
--- a/examples/10-transient-0/output/rust/src/lib.rs
+++ b/examples/10-transient-0/output/rust/src/lib.rs
@@ -4,7 +4,7 @@ pub mod transient_0;
#[cfg(test)]
mod test {
use std::io::Cursor;
- use super::data::{InnerStruct, OuterStruct, StructWithBool, StructWithInt32, StructWithInt64, StructWithList, StructWithOption, StructWithString};
+ use super::data::{EnumWithVariants, InnerStruct, OuterStruct, StructWithBool, StructWithInt32, StructWithInt64, StructWithList, StructWithOption, StructWithString};
#[test]
fn struct_with_bool() {
@@ -107,6 +107,27 @@ mod test {
);
}
+ #[test]
+ fn enum_with_variants() {
+ assert_round_trip_encoding(
+ EnumWithVariants::Zero,
+ super::data::transient_0::encode_enum_with_variants,
+ super::data::transient_0::decode_enum_with_variants,
+ );
+
+ assert_round_trip_encoding(
+ EnumWithVariants::One,
+ super::data::transient_0::encode_enum_with_variants,
+ super::data::transient_0::decode_enum_with_variants,
+ );
+
+ assert_round_trip_encoding(
+ EnumWithVariants::Two,
+ super::data::transient_0::encode_enum_with_variants,
+ super::data::transient_0::decode_enum_with_variants,
+ );
+ }
+
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<()>,