Skip to content

Commit

Permalink
[Rust] updated code generator to prevent rust warning for "ambiguous …
Browse files Browse the repository at this point in the history
…glob re-exports" (#982)

Co-authored-by: Michael Ward <[email protected]>
  • Loading branch information
mward and Michael Ward authored Mar 22, 2024
1 parent 7800371 commit a29ea3e
Show file tree
Hide file tree
Showing 10 changed files with 74 additions and 34 deletions.
2 changes: 1 addition & 1 deletion rust/benches/car_benchmark.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use car_codec::encoder::*;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use examples_uk_co_real_logic_sbe_benchmarks::*;
use car_codec::encoder::*;

const MANUFACTURER: &[u8] = b"MANUFACTURER";
const MODEL: &[u8] = b"MODEL";
Expand Down
19 changes: 14 additions & 5 deletions rust/tests/baseline_test.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
use std::fs::File;
use std::io::prelude::*;

use examples_baseline::*;
use car_codec::encoder::*;
use examples_baseline::{
boolean_type::BooleanType,
boost_type::BoostType,
car_codec::{
encoder::{AccelerationEncoder, FuelFiguresEncoder, PerformanceFiguresEncoder},
*,
},
message_header_codec,
message_header_codec::MessageHeaderDecoder,
model::Model,
optional_extras::OptionalExtras,
Encoder, ReadBuf, SbeResult, WriteBuf,
};
use std::{fs::File, io::prelude::*};

fn read_sbe_file_generated_from_java_example() -> std::io::Result<Vec<u8>> {
// Generated by the generateCarExampleDataFile gradle task.
Expand Down
15 changes: 13 additions & 2 deletions rust/tests/big_endian_test.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
use baseline_bigendian::*;
use car_codec::encoder::*;
use baseline_bigendian::{
boolean_type::BooleanType,
boost_type::BoostType,
car_codec::{
encoder::{AccelerationEncoder, FuelFiguresEncoder, PerformanceFiguresEncoder},
*,
},
message_header_codec,
message_header_codec::MessageHeaderDecoder,
model::Model,
optional_extras::OptionalExtras,
Encoder, ReadBuf, SbeResult, WriteBuf,
};

#[test]
fn big_endian_baseline_example() -> SbeResult<()> {
Expand Down
19 changes: 14 additions & 5 deletions rust/tests/extension_test.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
use std::fs::File;
use std::io::prelude::*;

use examples_extension::*;
use car_codec::encoder::*;
use examples_extension::{
boolean_type::BooleanType,
boost_type::BoostType,
car_codec::{
encoder::{AccelerationEncoder, FuelFiguresEncoder, PerformanceFiguresEncoder},
*,
},
message_header_codec,
message_header_codec::MessageHeaderDecoder,
model::Model,
optional_extras::OptionalExtras,
Encoder, ReadBuf, SbeResult, WriteBuf,
};
use std::{fs::File, io::prelude::*};

fn read_sbe_file_generated_from_java_example() -> std::io::Result<Vec<u8>> {
// Generated by the generateCarExampleDataFile gradle task.
Expand Down
4 changes: 4 additions & 0 deletions rust/tests/issue_435_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
use ::issue_435::*;
use issue_435::{
enum_ref::EnumRef, issue_435_codec::*, message_header_codec::MessageHeaderDecoder,
set_ref::SetRef,
};

fn create_encoder(buffer: &mut Vec<u8>) -> Issue435Encoder {
let issue_435 = Issue435Encoder::default().wrap(
Expand Down
6 changes: 1 addition & 5 deletions rust/tests/issue_895_test.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
use issue_895::{
issue_895_codec::{decoder::Issue895Decoder, encoder::Issue895Encoder},
MessageHeaderDecoder, ReadBuf, SbeResult, WriteBuf, ENCODED_LENGTH, SBE_BLOCK_LENGTH,
SBE_SCHEMA_ID, SBE_SCHEMA_VERSION, SBE_TEMPLATE_ID,
};
use issue_895::{issue_895_codec::*, message_header_codec::*, *};

fn create_encoder(buffer: &mut Vec<u8>) -> Issue895Encoder {
let issue_895 =
Expand Down
2 changes: 1 addition & 1 deletion rust/tests/issue_972_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use issue_972::*;
use issue_972::{issue_972_codec::*, message_header_codec::MessageHeaderDecoder, *};

fn create_encoder(buffer: &mut Vec<u8>) -> Issue972Encoder {
let issue_972 = Issue972Encoder::default().wrap(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,6 @@ void generate() throws IOException
}
indent(libRs, 0, "\n");

// add re-export of modules
for (final String module : modules)
{
indent(libRs, 0, "pub use crate::%s::*;\n", toLowerSnakeCase(module));
}
indent(libRs, 0, "\n");

generateSbeErrorEnum(libRs);
generateEitherEnum(libRs);

Expand Down Expand Up @@ -163,6 +156,7 @@ static void generateReadBuf(final Appendable writer, final ByteOrder byteOrder)
indent(writer, 0, "}\n");

// impl ReadBuf ...
indent(writer, 0, "#[allow(dead_code)]\n");
indent(writer, 0, "impl<%s> %s<%s> {\n", BUF_LIFETIME, READ_BUF_TYPE, BUF_LIFETIME);
indent(writer, 1, "#[inline]\n");
indent(writer, 1, "pub fn new(data: &%s [u8]) -> Self {\n", BUF_LIFETIME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ void generate(
final List<Token> varData) throws IOException
{
indent(sb, 0, "pub mod %s {\n", codecType.toString().toLowerCase());
indent(sb, 1, "use super::*;\n\n");
indent(sb, 1, "use super::*;\n");
indent(sb, 1, "use message_header_codec::*;\n\n");

// i.e. <name>Decoder or <name>Encoder
final String msgTypeName = formatStructName(msgToken.name()) + codecType.name();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,9 @@ private static void generateEnumEncoder(
final String name) throws IOException
{
final String referencedName = typeToken.referencedName();
final String enumType = formatStructName(referencedName == null ? typeToken.name() : referencedName);
final String enumType = format("%s::%s",
toLowerSnakeCase(referencedName == null ? typeToken.name() : referencedName),
formatStructName(referencedName == null ? typeToken.name() : referencedName));

if (fieldToken.isConstantEncoding())
{
Expand Down Expand Up @@ -479,7 +481,10 @@ private static void generateBitSetEncoder(
{
final Encoding encoding = bitsetToken.encoding();
final String rustPrimitiveType = rustTypeName(encoding.primitiveType());
final String structTypeName = formatStructName(bitsetToken.applicableTypeName());
final String referencedName = bitsetToken.referencedName();
final String structTypeName = format("%s::%s",
toLowerSnakeCase(referencedName == null ? bitsetToken.name() : referencedName),
formatStructName(bitsetToken.applicableTypeName()));
indent(sb, level, "#[inline]\n");
indent(sb, level, "pub fn %s(&mut self, value: %s) {\n", formatFunctionName(name), structTypeName);

Expand All @@ -496,7 +501,9 @@ private static void generateCompositeEncoder(
final String name) throws IOException
{
final String encoderName = toLowerSnakeCase(encoderName(name));
final String encoderTypeName = encoderName(formatStructName(typeToken.applicableTypeName()));
final String encoderTypeName = format("%s::%s",
codecModName(typeToken.referencedName() == null ? typeToken.name() : typeToken.referencedName()),
encoderName(formatStructName(typeToken.applicableTypeName())));
indent(sb, level, "/// COMPOSITE ENCODER\n");
indent(sb, level, "#[inline]\n");
indent(sb, level, "pub fn %s(self) -> %2$s<Self> {\n",
Expand Down Expand Up @@ -556,7 +563,10 @@ private static void generateCompositeDecoder(
final String name) throws IOException
{
final String decoderName = toLowerSnakeCase(decoderName(name));
final String decoderTypeName = decoderName(formatStructName(typeToken.applicableTypeName()));
final String referencedName = typeToken.referencedName();
final String decoderTypeName = format("%s::%s",
codecModName(referencedName == null ? typeToken.name() : referencedName),
decoderName(formatStructName(typeToken.applicableTypeName())));
indent(sb, level, "/// COMPOSITE DECODER\n");
indent(sb, level, "#[inline]\n");
if (fieldToken.version() > 0)
Expand All @@ -575,7 +585,7 @@ private static void generateCompositeDecoder(
}
else
{
indent(sb, level, "pub fn %s(self) -> %2$s<Self> {\n",
indent(sb, level, "pub fn %s(self) -> %s<Self> {\n",
decoderName,
decoderTypeName);

Expand All @@ -593,7 +603,11 @@ private static void generateBitSetDecoder(
{
final Encoding encoding = bitsetToken.encoding();
final String rustPrimitiveType = rustTypeName(encoding.primitiveType());
final String structTypeName = formatStructName(bitsetToken.applicableTypeName());
final String referencedName = bitsetToken.referencedName();
final String structTypeName = format("%s::%s",
toLowerSnakeCase(referencedName == null ? bitsetToken.name() : referencedName),
formatStructName(bitsetToken.applicableTypeName()));
indent(sb, level, "/// BIT SET DECODER\n");
indent(sb, level, "#[inline]\n");
indent(sb, level, "pub fn %s(&self) -> %s {\n", formatFunctionName(name), structTypeName);

Expand Down Expand Up @@ -834,7 +848,9 @@ private static void generateEnumDecoder(
final String name) throws IOException
{
final String referencedName = typeToken.referencedName();
final String enumType = formatStructName(referencedName == null ? typeToken.name() : referencedName);
final String enumType = format("%s::%s",
toLowerSnakeCase(referencedName == null ? typeToken.name() : referencedName),
formatStructName(referencedName == null ? typeToken.name() : referencedName));

if (fieldToken.isConstantEncoding())
{
Expand Down

0 comments on commit a29ea3e

Please sign in to comment.