From 55dd00f5182d929b98810ce0306e430a41623c81 Mon Sep 17 00:00:00 2001 From: Michael Ward Date: Fri, 15 Nov 2024 16:54:55 -0600 Subject: [PATCH 1/4] [Rust] updated LibRsDef.generate() to add "#![allow(clippy::all)]" --- .../java/uk/co/real_logic/sbe/generation/rust/LibRsDef.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f62aebe2d0..46897829cd 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 @@ -60,7 +60,7 @@ void generate(final Ir ir) throws IOException try (Writer libRs = outputManager.createOutput("lib")) { indent(libRs, 0, "#![forbid(unsafe_code)]\n"); - indent(libRs, 0, "#![allow(clippy::upper_case_acronyms)]\n"); + indent(libRs, 0, "#![allow(clippy::all)]\n"); indent(libRs, 0, "#![allow(non_camel_case_types)]\n\n"); indent(libRs, 0, "#![allow(ambiguous_glob_reexports)]\n\n"); indent(libRs, 0, "use ::core::{convert::TryInto};\n\n"); From 5a14a1b3ddb02f75fa982841207f959436a580de Mon Sep 17 00:00:00 2001 From: Michael Ward Date: Fri, 15 Nov 2024 17:45:38 -0600 Subject: [PATCH 2/4] [Rust] generating 'From for PRIMITIVE' instead of 'Into for ENUM' to satisfy 'from_over_into' lint --- .../sbe/generation/rust/RustGenerator.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java index 29fd0da752..ffbfd4203e 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java @@ -1265,10 +1265,10 @@ private static void generateEnum( indent(writer, 0, "}\n"); // From impl - generateFromImplForEnum(enumRustName, primitiveType, messageBody, writer); + generateFromPrimitiveForEnum(enumRustName, primitiveType, messageBody, writer); // Into impl - generateIntoImplForEnum(enumRustName, primitiveType, messageBody, writer); + generateFromEnumForPrimitive(enumRustName, primitiveType, messageBody, writer); // FromStr impl generateFromStrImplForEnum(enumRustName, primitiveType, messageBody, writer); @@ -1277,7 +1277,7 @@ private static void generateEnum( generateDisplayImplForEnum(enumRustName, primitiveType, messageBody, writer); } - private static void generateFromImplForEnum( + private static void generateFromPrimitiveForEnum( final String enumRustName, final String primitiveType, final List messageBody, @@ -1302,27 +1302,29 @@ private static void generateFromImplForEnum( indent(writer, 0, "}\n"); } - private static void generateIntoImplForEnum( + private static void generateFromEnumForPrimitive( final String enumRustName, final String primitiveType, final List messageBody, final Appendable writer) throws IOException { - indent(writer, 0, "impl Into<%s> for %s {\n", primitiveType, enumRustName); + indent(writer, 0, "impl From<%s> for %s {\n", enumRustName, primitiveType); indent(writer, 1, "#[inline]\n"); - indent(writer, 1, "fn into(self) -> %s {\n", primitiveType); - indent(writer, 2, "match self {\n"); + indent(writer, 1, "fn from(v: %s) -> Self {\n", enumRustName); + indent(writer, 2, "match v {\n"); + for (final Token token : messageBody) { final Encoding encoding = token.encoding(); final String literal = generateRustLiteral(encoding.primitiveType(), encoding.constValue().toString()); - indent(writer, 3, "Self::%s => %s, \n", token.name(), literal); + indent(writer, 3, "%s::%s => %s, \n", enumRustName, token.name(), literal); } + { final Encoding encoding = messageBody.get(0).encoding(); final CharSequence nullVal = generateRustLiteral(encoding.primitiveType(), - encoding.applicableNullValue().toString()); - indent(writer, 3, "Self::NullVal => %s,\n", nullVal); + encoding.applicableNullValue().toString()); + indent(writer, 3, "%s::NullVal => %s,\n", enumRustName, nullVal); } indent(writer, 2, "}\n"); indent(writer, 1, "}\n"); @@ -1342,10 +1344,10 @@ private static void generateFromStrImplForEnum( indent(writer, 2, "match v {\n"); for (final Token token : messageBody) { - indent(writer, 3, "\"%1$s\" => core::result::Result::Ok(Self::%1$s), \n", token.name()); + indent(writer, 3, "\"%1$s\" => Ok(Self::%1$s), \n", token.name()); } // default => NullVal - indent(writer, 3, "_ => core::result::Result::Ok(Self::NullVal),\n"); + indent(writer, 3, "_ => Ok(Self::NullVal),\n"); indent(writer, 2, "}\n"); indent(writer, 1, "}\n"); indent(writer, 0, "}\n"); From e8bb09ef4283b7c26600cb8631bc3c99b9450da1 Mon Sep 17 00:00:00 2001 From: Michael Ward Date: Fri, 15 Nov 2024 17:46:59 -0600 Subject: [PATCH 3/4] [Rust] removed unused method parameter --- .../uk/co/real_logic/sbe/generation/rust/RustGenerator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java index ffbfd4203e..d291e20cd0 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java @@ -1271,7 +1271,7 @@ private static void generateEnum( generateFromEnumForPrimitive(enumRustName, primitiveType, messageBody, writer); // FromStr impl - generateFromStrImplForEnum(enumRustName, primitiveType, messageBody, writer); + generateFromStrImplForEnum(enumRustName, messageBody, writer); // Display impl generateDisplayImplForEnum(enumRustName, primitiveType, messageBody, writer); @@ -1333,7 +1333,6 @@ private static void generateFromEnumForPrimitive( private static void generateFromStrImplForEnum( final String enumRustName, - final String primitiveType, final List messageBody, final Appendable writer) throws IOException { From e2903a84cc41532b1f55107dfcdac65f3d7dcbf2 Mon Sep 17 00:00:00 2001 From: Michael Ward Date: Mon, 18 Nov 2024 09:25:54 -0600 Subject: [PATCH 4/4] fixed formatting --- .../uk/co/real_logic/sbe/generation/rust/RustGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java index d291e20cd0..0c03766553 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java @@ -1323,7 +1323,7 @@ private static void generateFromEnumForPrimitive( { final Encoding encoding = messageBody.get(0).encoding(); final CharSequence nullVal = generateRustLiteral(encoding.primitiveType(), - encoding.applicableNullValue().toString()); + encoding.applicableNullValue().toString()); indent(writer, 3, "%s::NullVal => %s,\n", enumRustName, nullVal); } indent(writer, 2, "}\n");