From b8a0247d2025983c031cc460600b1f7070442068 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 17 May 2023 09:40:15 +0200 Subject: [PATCH] [Rust] Add derive Copy Clone traits for decoders --- .../uk/co/real_logic/sbe/generation/rust/LibRsDef.java | 2 +- .../sbe/generation/rust/MessageCoderDef.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/LibRsDef.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/LibRsDef.java index 419f155e48..90078b796e 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/LibRsDef.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/LibRsDef.java @@ -149,7 +149,7 @@ static void generateEitherEnum(final Writer writer) throws IOException static void generateReadBuf(final Appendable writer, final ByteOrder byteOrder) throws IOException { - indent(writer, 0, "#[derive(Debug, Default)]\n"); + indent(writer, 0, "#[derive(Clone, Copy, Debug, Default)]\n"); indent(writer, 0, "pub struct %s<%s> {\n", READ_BUF_TYPE, BUF_LIFETIME); RustUtil.indent(writer, 1, "data: &%s [u8],\n", BUF_LIFETIME); indent(writer, 0, "}\n"); diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/MessageCoderDef.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/MessageCoderDef.java index d61f888f01..56b5e10cf2 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/MessageCoderDef.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/MessageCoderDef.java @@ -155,7 +155,15 @@ void appendMessageHeaderDecoderFn(final Appendable out) throws IOException void appendMessageStruct(final Appendable out, final String structName) throws IOException { - indent(out, 1, "#[derive(Debug, Default)]\n"); + if (this.codecType == Decoder) + { + indent(out, 1, "#[derive(Clone, Copy, Debug, Default)]\n"); + } + else + { + indent(out, 1, "#[derive(Debug, Default)]\n"); + } + indent(out, 1, "pub struct %s {\n", withLifetime(structName)); indent(out, 2, "buf: %s,\n", withLifetime(this.codecType.bufType())); indent(out, 2, "initial_offset: usize,\n");