diff options
3 files changed, 20 insertions, 18 deletions
diff --git a/examples/10-transient-0/output/rust/src/gen/transient_0.rs b/examples/10-transient-0/output/rust/src/gen/transient_0.rs index 63b2367..ad47d30 100644 --- a/examples/10-transient-0/output/rust/src/gen/transient_0.rs +++ b/examples/10-transient-0/output/rust/src/gen/transient_0.rs @@ -22,11 +22,16 @@ pub fn decode_int_32(reader: &mut impl std::io::Read) -> ::core::primitive::i32 } pub fn encode_int_64(value: &::core::primitive::i64, writer: &mut impl std::io::Write) { - todo!(); + writer.write_all(&value.to_le_bytes()); } pub fn decode_int_64(reader: &mut impl std::io::Read) -> ::core::primitive::i64 { - todo!() + let bytes = { + let mut bytes = [0; 8]; + reader.read_exact(&mut bytes); + bytes + }; + ::core::primitive::i64::from_le_bytes(bytes) } pub fn encode_string(value: &::std::string::String, writer: &mut impl std::io::Write) { diff --git a/examples/10-transient-0/output/rust/src/lib.rs b/examples/10-transient-0/output/rust/src/lib.rs index 56be8ca..9b53c0e 100644 --- a/examples/10-transient-0/output/rust/src/lib.rs +++ b/examples/10-transient-0/output/rust/src/lib.rs @@ -18,6 +18,17 @@ mod test { ); } + #[test] + fn struct_with_int_64() { + let value = StructWithInt64 { a: 10, b: 25 }; + + assert_round_trip_encoding( + value, + super::data::transient_0::encode_struct_with_int_64, + super::data::transient_0::decode_struct_with_int_64, + ); + } + fn assert_round_trip_encoding<T: std::cmp::PartialEq + std::fmt::Debug>( value: T, encode: impl Fn(&T, &mut Cursor<Vec<u8>>), diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java index 9e4ae50..02b0ae9 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java @@ -113,25 +113,11 @@ public class RustTransient0Generator implements Generator { } private RustItem generateEncodeInt64Function() { - return generateEncodeFunction( - NativeTypes.INT_64, - new RustBlockExpression( - List.of( - new RustExpressionStatement(generateTodo()) - ), - Optional.empty() - ) - ); + return generateEncodeIntFunction(NativeTypes.INT_64); } private RustItem generateDecodeInt64Function() { - return generateDecodeFunction( - NativeTypes.INT_64, - new RustBlockExpression( - List.of(), - Optional.of(generateTodo()) - ) - ); + return generateDecodeIntFunction(NativeTypes.INT_64, 64); } private RustItem generateEncodeIntFunction(SimpleNativeType type) { |
