diff --git a/docs/generators/rust.md b/docs/generators/rust.md index 670ff8079a..dc57794b8d 100644 --- a/docs/generators/rust.md +++ b/docs/generators/rust.md @@ -7,6 +7,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Option | Description | Values | Default | | ------ | ----------- | ------ | ------- | +|enumNameSuffix|Suffix that will be appended to all enum names.| || |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |library|library template (sub-template) to use.|
**hyper**
HTTP client: Hyper.
**reqwest**
HTTP client: Reqwest.
|reqwest| |packageName|Rust package name (convention: lowercase).| |openapi| 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 e06e8e3456..2aa6d625e0 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 @@ -54,6 +54,7 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { protected String modelDocPath = "docs/"; protected String apiFolder = "src/apis"; protected String modelFolder = "src/models"; + protected String enumSuffix = ""; // default to empty string for backward compatibility public CodegenType getTag() { return CodegenType.CLIENT; @@ -179,6 +180,7 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { .defaultValue(Boolean.TRUE.toString())); cliOptions.add(new CliOption(SUPPORT_MULTIPLE_RESPONSES, "If set, return type wraps an enum of all possible 2xx schemas. This option is for 'reqwest' library only", SchemaTypeUtil.BOOLEAN_TYPE) .defaultValue(Boolean.FALSE.toString())); + cliOptions.add(new CliOption(CodegenConstants.ENUM_NAME_SUFFIX, CodegenConstants.ENUM_NAME_SUFFIX_DESC).defaultValue(this.enumSuffix)); supportedLibraries.put(HYPER_LIBRARY, "HTTP client: Hyper."); supportedLibraries.put(REQWEST_LIBRARY, "HTTP client: Reqwest."); @@ -247,6 +249,10 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { public void processOpts() { super.processOpts(); + if (additionalProperties.containsKey(CodegenConstants.ENUM_NAME_SUFFIX)) { + enumSuffix = additionalProperties.get(CodegenConstants.ENUM_NAME_SUFFIX).toString(); + } + if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); } else { @@ -650,9 +656,13 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String toEnumName(CodegenProperty property) { + String name = property.name; + if (!org.apache.commons.lang3.StringUtils.isEmpty(enumSuffix)) { + name = name + "_" + enumSuffix; + } // camelize the enum name // phone_number => PhoneNumber - String enumName = camelize(toModelName(property.name)); + String enumName = camelize(toModelName(name)); // remove [] for array or map of enum enumName = enumName.replace("[]", "");