Skip to content

Commit d9600d4

Browse files
mwardMichael Ward
and
Michael Ward
authored
[Rust] fix generated comparison when value is NAN (#895) (#896)
Co-authored-by: Michael Ward <mward@drw.com>
1 parent e1c1278 commit d9600d4

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -746,8 +746,18 @@ private static void generatePrimitiveOptionalDecoder(
746746
indent(sb, level + 1, "let value = self.get_buf().get_%s_at(self.%s);\n",
747747
rustPrimitiveType,
748748
getBufOffset(fieldToken));
749-
indent(sb, level + 1, "if value == %s {\n",
750-
generateRustLiteral(primitiveType, encoding.applicableNullValue().toString()));
749+
750+
751+
final String literal = generateRustLiteral(primitiveType, encoding.applicableNullValue().toString());
752+
if (literal.endsWith("::NAN"))
753+
{
754+
indent(sb, level + 1, "if value.is_nan() {\n");
755+
}
756+
else
757+
{
758+
indent(sb, level + 1, "if value == %s {\n", literal);
759+
}
760+
751761
indent(sb, level + 2, "None\n");
752762
indent(sb, level + 1, "} else {\n");
753763
indent(sb, level + 2, "Some(value)\n");

0 commit comments

Comments
 (0)