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("[]", "");