Skip to content

Commit 5a14a1b

Browse files
author
Michael Ward
committed
[Rust] generating 'From<ENUM> for PRIMITIVE' instead of 'Into<PRIMITIVE> for ENUM' to satisfy 'from_over_into' lint
1 parent 55dd00f commit 5a14a1b

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1265,10 +1265,10 @@ private static void generateEnum(
12651265
indent(writer, 0, "}\n");
12661266

12671267
// From impl
1268-
generateFromImplForEnum(enumRustName, primitiveType, messageBody, writer);
1268+
generateFromPrimitiveForEnum(enumRustName, primitiveType, messageBody, writer);
12691269

12701270
// Into impl
1271-
generateIntoImplForEnum(enumRustName, primitiveType, messageBody, writer);
1271+
generateFromEnumForPrimitive(enumRustName, primitiveType, messageBody, writer);
12721272

12731273
// FromStr impl
12741274
generateFromStrImplForEnum(enumRustName, primitiveType, messageBody, writer);
@@ -1277,7 +1277,7 @@ private static void generateEnum(
12771277
generateDisplayImplForEnum(enumRustName, primitiveType, messageBody, writer);
12781278
}
12791279

1280-
private static void generateFromImplForEnum(
1280+
private static void generateFromPrimitiveForEnum(
12811281
final String enumRustName,
12821282
final String primitiveType,
12831283
final List<Token> messageBody,
@@ -1302,27 +1302,29 @@ private static void generateFromImplForEnum(
13021302
indent(writer, 0, "}\n");
13031303
}
13041304

1305-
private static void generateIntoImplForEnum(
1305+
private static void generateFromEnumForPrimitive(
13061306
final String enumRustName,
13071307
final String primitiveType,
13081308
final List<Token> messageBody,
13091309
final Appendable writer) throws IOException
13101310
{
1311-
indent(writer, 0, "impl Into<%s> for %s {\n", primitiveType, enumRustName);
1311+
indent(writer, 0, "impl From<%s> for %s {\n", enumRustName, primitiveType);
13121312
indent(writer, 1, "#[inline]\n");
1313-
indent(writer, 1, "fn into(self) -> %s {\n", primitiveType);
1314-
indent(writer, 2, "match self {\n");
1313+
indent(writer, 1, "fn from(v: %s) -> Self {\n", enumRustName);
1314+
indent(writer, 2, "match v {\n");
1315+
13151316
for (final Token token : messageBody)
13161317
{
13171318
final Encoding encoding = token.encoding();
13181319
final String literal = generateRustLiteral(encoding.primitiveType(), encoding.constValue().toString());
1319-
indent(writer, 3, "Self::%s => %s, \n", token.name(), literal);
1320+
indent(writer, 3, "%s::%s => %s, \n", enumRustName, token.name(), literal);
13201321
}
1322+
13211323
{
13221324
final Encoding encoding = messageBody.get(0).encoding();
13231325
final CharSequence nullVal = generateRustLiteral(encoding.primitiveType(),
1324-
encoding.applicableNullValue().toString());
1325-
indent(writer, 3, "Self::NullVal => %s,\n", nullVal);
1326+
encoding.applicableNullValue().toString());
1327+
indent(writer, 3, "%s::NullVal => %s,\n", enumRustName, nullVal);
13261328
}
13271329
indent(writer, 2, "}\n");
13281330
indent(writer, 1, "}\n");
@@ -1342,10 +1344,10 @@ private static void generateFromStrImplForEnum(
13421344
indent(writer, 2, "match v {\n");
13431345
for (final Token token : messageBody)
13441346
{
1345-
indent(writer, 3, "\"%1$s\" => core::result::Result::Ok(Self::%1$s), \n", token.name());
1347+
indent(writer, 3, "\"%1$s\" => Ok(Self::%1$s), \n", token.name());
13461348
}
13471349
// default => NullVal
1348-
indent(writer, 3, "_ => core::result::Result::Ok(Self::NullVal),\n");
1350+
indent(writer, 3, "_ => Ok(Self::NullVal),\n");
13491351
indent(writer, 2, "}\n");
13501352
indent(writer, 1, "}\n");
13511353
indent(writer, 0, "}\n");

0 commit comments

Comments
 (0)