diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java index 3c70fb2b73b2..e9d42056baec 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java @@ -696,10 +696,22 @@ public String getSchemaType(Schema p) { } } else { switch (p.getFormat()) { + case "int8": + return unsigned ? "u8" : "i8"; + case "int16": + return unsigned ? "u16" : "i16"; case "int32": return unsigned ? "u32" : "i32"; case "int64": return unsigned ? "u64" : "i64"; + case "uint8": + return "u8"; + case "uint16": + return "u16"; + case "uint32": + return "u32"; + case "uint64": + return "u64"; } } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustClientCodegenTest.java index d4bc7c1845ec..3b62552c53b0 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustClientCodegenTest.java @@ -102,12 +102,30 @@ public void testWithIntegerDefaults() { s.setMinimum(BigDecimal.valueOf(0)); s.setMaximum(BigDecimal.valueOf(1)); + s.setFormat("int8"); + Assert.assertEquals(codegen.getSchemaType(s), "i8"); + + s.setFormat("int16"); + Assert.assertEquals(codegen.getSchemaType(s), "i16"); + s.setFormat("int32"); Assert.assertEquals(codegen.getSchemaType(s), "i32"); s.setFormat("int64"); Assert.assertEquals(codegen.getSchemaType(s), "i64"); + s.setFormat("uint8"); + Assert.assertEquals(codegen.getSchemaType(s), "u8"); + + s.setFormat("uint16"); + Assert.assertEquals(codegen.getSchemaType(s), "u16"); + + s.setFormat("uint32"); + Assert.assertEquals(codegen.getSchemaType(s), "u32"); + + s.setFormat("uint64"); + Assert.assertEquals(codegen.getSchemaType(s), "u64"); + // Clear format - should use default of i32 s.setFormat(null); @@ -181,6 +199,14 @@ public void testWithPreferUnsigned() { s.setMaximum(BigDecimal.valueOf(Long.MAX_VALUE)); Assert.assertEquals(codegen.getSchemaType(s), "u32"); + // Should respect hardcoded 8-bits, but prefer unsigned + s.setFormat("int8"); + Assert.assertEquals(codegen.getSchemaType(s), "u8"); + + // Should respect hardcoded 16-bits, but prefer unsigned + s.setFormat("int16"); + Assert.assertEquals(codegen.getSchemaType(s), "u16"); + // Should respect hardcoded 32-bits, but prefer unsigned s.setFormat("int32"); Assert.assertEquals(codegen.getSchemaType(s), "u32");